大数据量表的优化查询 - 发条
来源:互联网 发布:凤凰卫视直播软件apk 编辑:程序博客网 时间:2024/09/21 08:55
1: 索引, 我们最先想到的就是创建索引,创建索引可以成倍的提升查询的效率,节省时间。但是如果数据量太过于巨大的时候,这个时候单纯的创建索引是无济于事的,我们知道假如特别是在大数据量中统计查询,就拿 1000W 数据来说吧,如果使用 count函数的话,最少要 50-100 秒以上,当然如果你的服务器配置够高,处理够快,或许会少很多但是一样会超过 10 秒。
单纯的建立索引是无济于事的。 我们可以在创建索引的时候给索引加个属性,compress ,这个属性可以将所创建的索引进行一个良好的归类,这样的话,查询速度会提升 5-10 倍 ,或者更高。但是唯一的缺点是,压缩索引只能手动创建,对于那些KEY 是无法进行压缩的,因为 KEY (主键)是自动创建的索引, compress 必选的属性,一般默认是不创建。所以在创建压缩索引的时候,可以找其他的关键字段进行压缩,比如工单表里面的流水号
2:尽量 少的使用那些函数,比如 IS NUll;IS NOT NULL,IN;NOT IN 等这样的匹配函数,可以使用符号程序进行操作
3:尽量 少使用子查询 ,如果你写个类,里面模仿子查询的效果,你就会发现,简直在要命,我们可以使用联合查询,或者是外连接查询,这样速度会比子查询快很多。
4 :在使用索引的时候,注意如下:
Where 子句中有 “ ! = ” 将使索引失效
select account_name from test where amount != 0 ( 不使用 )
select account_name from test where amount > 0 ( 使用 )
Where 条件中对字段增加处理函数将不使用该列的索引
select * from emp where to_char(hire_date,'yyyymmdd')='20080411' ( 不使用 )
select * from emp where hire_date = to_char('20080411','yyyymmdd') ( 使用 )
避免在索引列上使用 IS NULL 和 IS NOT NULL
select * from emp where dept_code is not null ( 不使用 )
select * from emp where dept_code > 0 ( 使用 )
通配符 % 的使用
select * from emp where name like '%A' ( 不使用索引 )
select * from emp where name like 'A%' ( 使用索引 )
单纯的建立索引是无济于事的。 我们可以在创建索引的时候给索引加个属性,compress ,这个属性可以将所创建的索引进行一个良好的归类,这样的话,查询速度会提升 5-10 倍 ,或者更高。但是唯一的缺点是,压缩索引只能手动创建,对于那些KEY 是无法进行压缩的,因为 KEY (主键)是自动创建的索引, compress 必选的属性,一般默认是不创建。所以在创建压缩索引的时候,可以找其他的关键字段进行压缩,比如工单表里面的流水号
2:尽量 少的使用那些函数,比如 IS NUll;IS NOT NULL,IN;NOT IN 等这样的匹配函数,可以使用符号程序进行操作
3:尽量 少使用子查询 ,如果你写个类,里面模仿子查询的效果,你就会发现,简直在要命,我们可以使用联合查询,或者是外连接查询,这样速度会比子查询快很多。
4 :在使用索引的时候,注意如下:
Where 子句中有 “ ! = ” 将使索引失效
select account_name from test where amount != 0 ( 不使用 )
select account_name from test where amount > 0 ( 使用 )
Where 条件中对字段增加处理函数将不使用该列的索引
select * from emp where to_char(hire_date,'yyyymmdd')='20080411' ( 不使用 )
select * from emp where hire_date = to_char('20080411','yyyymmdd') ( 使用 )
避免在索引列上使用 IS NULL 和 IS NOT NULL
select * from emp where dept_code is not null ( 不使用 )
select * from emp where dept_code > 0 ( 使用 )
通配符 % 的使用
select * from emp where name like '%A' ( 不使用索引 )
select * from emp where name like 'A%' ( 使用索引 )
0 0
- 大数据量表的优化查询 - 发条
- 针对大数据量表的优化查询
- 针对大数据量表的优化查询
- 针对大数据量表的优化查询
- 大数据量表的优化查询
- 大数据量表的复杂查询
- Oracle中大数据量表的管理
- MySQL大数据量表根据非索引字段检索优化
- oracle 大数据查询优化的方案
- 大数据查询的常见优化技巧
- 大数据量表 create table
- 大数据量表删除插入
- 大数据量表结构设计案例
- 删除大数据量表的列的一个好方法
- oracle存储过程实现大数据量表的复制
- 浅谈Oracle中大数据量表的管理
- mysql大数据量表的处理方法(拆表,分区)
- 大数据查询怎么优化?
- Plus One
- 从C++到Objective-C的学习笔记
- C#中String类的几个方法(IndexOf、LastIndexOf、Substring)
- ACCESS数据库的注入实现之常见的select查询1
- Elance总结
- 大数据量表的优化查询 - 发条
- TortoiseGit 保存用户名密码的方法
- sqlite的初步使用,JAVA + C#(winform)
- 环境变量的配置
- 六类qsort排序方法
- XMPP环境搭建常见错误
- sscanf函数与sscanf_s函数
- 安装HBase 0.94.6-cdh4.5.0
- JBoss bundle和Apache 2.2.x环境下配置mod_proxy