SQL 关键索引,在大表上创建索引
千万记录的表不算大,只要索引创建对了,性能可以正常提升,
还有一种就是比较偏的方式:先把需要批量的数据库插入临时表
这个可以防止频繁对表进行查询 *** 作,
SQL 如下:select into #Temp from Table
后面就只需要对临时表 *** 作,不允许主表性能。
select 公司,(case when grouping(部门) = 1 then ’公司合计' else '部门' end) as 部门,sum(工资)工资总额
from a
group by rollup(公司,部门)
;
上面这个,数据是先出(公司+部门)的组合的 key(得到该公司的每个部门的总和),最后出一个 公司 的总和(该公司所有部门总和)。
你也可以用
group by grouping sets(公司,部门)
得到公司的总和与部门的总和,这个略有不同,但可以通过不同的括号层次组合出你想要的,比如
group by grouping sets((公司,部门),公司,部门)
另外还有:
group by cube(公司,部门)
这个是算出每个公司的总和(不考虑哪个部门的),与每个部门的总和(不考虑哪家公司的),用 cube 汇总是用在多个公司相同的部门的时候,比如多个分公司都有财务部的话,如果你这个 DEPNO 在数据库中每家公司的每个部门都拥有完全不同的值的话就不适用。
理论上,要针对所有的表各写一条SQL,SQL中要列出所有的字符类字段,例如:
SELECT FROM taba WHERE fielda LIKE '%abc%' OR fieldB LIKE '%abc%' ……;
SELECT FROM tabb WHERE fielda LIKE '%abc%' OR fieldB LIKE '%abc%' ……;
写这样的SQL非常痛苦,看你是用的什么数据库,许多数据库系统有系统字典,就是在数据库里面的某些表中存放着所有的数据库、表、字段的名称和类型,那样可以通过那些信息编写出自动生成前面的SQL语句的SQL语句。
另外,一般的数据库都是存放在文件中或者磁盘上,可能利用全盘搜索软件搜索磁盘上特定的字符串,比上述SQL语句要快得多,只是搜索到了,要判断数据库行有一些麻烦。
--SQL 查询所有表名:
SELECT NAME FROM SYSOBJECTS WHERE TYPE='U'
SELECT FROM INFORMATION_SCHEMATABLES
--查询表的所有字段名:
SELECT NAME FROM SYSCOLUMNS WHERE ID=OBJECT_ID(' 表名' )
SELECT FROM INFORMATION_SCHEMATABLES
SELECT FROM INFORMATION_SCHEMAVIEWS
SELECT FROM INFORMATION_SCHEMACOLUMNS
---------以下为其他数据库查询表----------
--ORACLE 查看所有表名:
SELECT TABLE_NAME FROM USER_TABLES
--ACCESS 查看所有表名:
SELECT NAME FROM MSYSOBJECTS WHERE TYPE=1 AND FLAGS=0
--MSYSOBJECTS 是系统对象,默认情况是隐藏的。通过工具、选项、视图、显示、系统对象可以使之显示出来。
SELECT 分类表cname AS 分类名称, Count(商品表cls) AS 商品数量
FROM 分类表 LEFT JOIN 商品表 ON 分类表cname = 商品表cls
GROUP BY 分类表cname
ORDER BY Count(商品表cls) DESC;
以上就是关于在数据库中如何快速查询数据,处理方法全部的内容,包括:在数据库中如何快速查询数据,处理方法、Oracle数据库分类汇总方法、对整个数据库进行搜索的方法等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)