关于sql语句的优化
2015-10-26 13:58
477 查看
1、SELECT子句中避免使用 *, 尽量应该根据业务需求按字段进行查询。
2、在写sql语句的话,尽量保持每次查询的sql语句字段用大写,因为oracle总是先解析sql语句,把小写的字母转换成大写的再执行
3. 用>=替换>
如一个表有100万记录,一个数值型字段A,
A=0时,有30万条;
A=1时,有30万条;
A=2时,有39万条;
A=3时,有1万记录。
那么执行 A>2 与 A>=3 的效果就有很大的区别了,因为 A>2 时,
ORACLE会先找出为2的记录索引再进行比较,
而A>=3时ORACLE则直接找到=3的记录索引。
4. exists和in
执行顺序不同,in和not in是先执行in和not in条件里的语句,然后执行主查询,exists和not exists是
先执行主语句然后执行exists和not exists条件里的语句。
in用于检查一个值是否包含在列表中。exists用于检查子查询返回行的存在性
在子查询中,exists提供的性能通常比in提供的性能要好
IN适合于外表大而内表小的情况;EXISTS适合于外表小而内表大的情况
2、在写sql语句的话,尽量保持每次查询的sql语句字段用大写,因为oracle总是先解析sql语句,把小写的字母转换成大写的再执行
3. 用>=替换>
如一个表有100万记录,一个数值型字段A,
A=0时,有30万条;
A=1时,有30万条;
A=2时,有39万条;
A=3时,有1万记录。
那么执行 A>2 与 A>=3 的效果就有很大的区别了,因为 A>2 时,
ORACLE会先找出为2的记录索引再进行比较,
而A>=3时ORACLE则直接找到=3的记录索引。
4. exists和in
执行顺序不同,in和not in是先执行in和not in条件里的语句,然后执行主查询,exists和not exists是
先执行主语句然后执行exists和not exists条件里的语句。
in用于检查一个值是否包含在列表中。exists用于检查子查询返回行的存在性
在子查询中,exists提供的性能通常比in提供的性能要好
IN适合于外表大而内表小的情况;EXISTS适合于外表小而内表大的情况
相关文章推荐
- spring3.0结合Redis在项目中的运用
- sql执行顺序
- 数据库的检查约束check约束
- sql:查询课程号'0312091006'成绩排名第5到第10之间的学生学号
- mybatis sqlmap中property遇到的问题
- 搭建高可用mongodb集群(四)—— 分片
- oracle plsql参数
- 数据库及SQL----常用知识点总结
- SQL Server 常见问题1
- 常用sql使用技巧
- 搭建高可用mongodb集群(三)—— 深入副本集内部机制
- MySQL5.5(cmake)简介、安装、应用、账户授权、还原、备份、还原
- redis笔记
- redis 学习指南
- Redis学习 -- 安装及基本使用
- PowerDesigner中导入MYSQL数据库结构的步骤
- Hibernate-HQL-QBC 检索-本地SQL 检索
- MongoDB 与传统关系型数据库mysql比较
- MySQL 5.6初始配置调整
- mysql中如何统计某字段里某个字符的个数