数据库优化之SQL语句优化
数据库优化之SQL语句优化
数据库优化之SQL语句优化
数据库优化涉及到的方方面面有很多,本文只针对SQL语句的优化跟大家做一个简单的探讨。
大家都知道,访问数据表主要有两种方式:一是全表扫描;二是通过数据索引扫描。索引是数据库中重要的数据结构,它的根本目的就是为了提高查询效率。因此,在进行SQL语句优化前,我们有必要对数据表建好必要的索引,而要建立恰到好处的索引,需要遵循如下原则:
ü 最频繁使用的、用以缩小查询范围的字段。如在经常进行连接,但是没有指定为外键的列上建立索引,而不经常连接的字段则由优化器自动生成索引。
ü 最频繁使用的、需要排序的字段。如在频繁进行排序或分组(即进行group by或order by操作)的列上建立索引。
ü 在条件表达式中经常用到的不同值较多的列上建立检索,在不同值少的列上不要建立索引。如在雇员表的“性别”列上只有“男”与“女”两个不同值,因此就无必要建立索引。如果建立索引不但不会提高查询效率,反而会严重降低更新速度。
ü 如果待排序的列有多个,可以在这些列上建立复合索引(compound index)。
那么,在实际开发过程中,我们应该怎样去编写SQL语句,尽量避免全表扫描以提高查询速度呢?下面给出我在实践中遇到的以及在某些资料上学习到的一些经验:
1. 应尽量避免使用“select * ”进行查询,字段提取要按照“需多少、提多少”的原则。原因是:数据库在解析的过程中,会将 '*' 依次转换成所有的列名, 这个工作是通过查询数据字典完成的, 这意味着将耗费更多的时间。
2. 应尽量避免在 where 子句中对字段进行 null 值判断,否则将导致引擎放弃使用索引而进行全表扫描。如:
select id from t where num is null.
解决方法: 可以在num上设置默认值0,确保表中num列没有null值,然后这样查询: select id from t where num=0.
3. Like语句是否会引起全表扫描取决于通配符的类型,如:name like %张 或 name like %张% ,会引起全表扫描,而name like 张% 不会。原因是:通配符%在字符串的开头使得索引无法使用。
4. 应尽量避免非操作符及函数引起的全表扫描,如:not、!=、<>、!<、!>、not exists、not in、not like等,另外还有函数,如:
substr(num,1,4)= 5400
优化处理:
num like 5400% .
5. 应尽量避免在 where 子句中使用 or 来连接条件,否则将导致引擎放弃使用索引而进行全表扫描,如:
select id from t where num=10 or num=20.
解决办法:
select id from t where num=10.
union all
select id from t where num=20.
6. 用“>=”替代“>”,如:
select name from t where id>3.
优化处理:
select name from t where id >=4.
你可能喜欢
- SQL查询语句大全
- SQL数据库查询
- Oracle优化
- Oracle数据库性能优化实务
- Oracle执行计划
- SQL语句教程
- 数据库优化
- SQL查询语句大全集锦28页
- SQL查询语句大全14页
- SQL查询语句大全[1]22页
- SQL查询语句大全9页
- SQL查询语句大全68页
- SQL查询语句大全3页
- 提高速度 优化SQL Server数据库查询5页
- 第4章 掌握数据库查询语言T-SQL29页
- SQL_server_2008数据库查询核心指南52页
- 第六章 关系数据库查询语言SQL38页
- 第5章 关系型数据库查询语言SQL64页
- 第8章 SQL关系数据库查询语言37页
- Oracle语句优化知识5页
- Oracle SQL 优化讲座56页
- Oracle语句优化53个规则详解35页
- Oracle SQL的优化规则4页
- Oracle SQL语句优化9页
- Oracle SQL性能优化6页
- Oracle数据库性能优化实务第一讲-概述27页
- Oracle数据库性能优化实务第2讲-OWI48页
- Oracle数据库性能优化实务 诊断事件概述46页
- Oracle数据库性能优化实务 闩锁及闩锁优化33页
- Oracle数据库性能优化实务 数据文件IO29页
- Oracle数据库性能优化实务第一讲-概述27页
- Oracle如何分析执行计划10页
- Oracle执行计划40页
- Oracle 执行计划中的几种关联说明2页
- Oracle优化之执行计划解析41页
- SQL语句执行计划变化的原因分析与应对策略-For Oracle 10g18页
- Oracle的执行计划详解7页


