SQL_where条件的优化
2015-03-19 15:34
134 查看
原则,多数数据库都是从 左到右的顺序处理条件,把能过滤更多数据的条件放在前面,过滤少的条件放后面
SQL1: select * from employee
where salary >1000 --条件1,过滤的数据较少
and dept_id='01' --条件2,过滤的数据比条件1多
上面的SQL就不符合我们的原则了,应该把过滤数据更多的条件放在前面,因此改为下面这样更好
select * from employee
where dept_id='01' --过滤更多数据的条件放在前面
and salary > 1000
在关系数据库中,除在数据库的物理设计、关系规范化等方面进行优化外,一个简单直接有效的方法是对SQL语句进行调整,减少计算量和内存需求,提高响应速度。
a.对同一表格进行多个选择运算
选择条件的排列顺序对性能有较大影响,因为不仅影响索引的选取,而且关系到临时表的大小。现以下面的查询语句为例进行说明:
select * from customer
where city=’beijing’ and fname=’li’
若表中存在100万条记录,其中city=’beijing’的10万,fname=’li’的为2万,其中city=’beijing’的 为2千,在SQL Server中,查询条件的选取是从左到右使用的,因而,执行第一个条件结果返回一个10万行的临时表,然后再从中进行选择,从而得到 最终结果。如果把选择条件改为where fname=’li’ and city=’beijing’,则先得到一个2万行的临时表,再得到同样的结 果。由此可见,选择条件的选取极大的影响着查询语句的计算量,所以,要提高查询的响应速度,可以将较严格的条件写在前面,较弱的条件放在后面。
SQL1: select * from employee
where salary >1000 --条件1,过滤的数据较少
and dept_id='01' --条件2,过滤的数据比条件1多
上面的SQL就不符合我们的原则了,应该把过滤数据更多的条件放在前面,因此改为下面这样更好
select * from employee
where dept_id='01' --过滤更多数据的条件放在前面
and salary > 1000
在关系数据库中,除在数据库的物理设计、关系规范化等方面进行优化外,一个简单直接有效的方法是对SQL语句进行调整,减少计算量和内存需求,提高响应速度。
a.对同一表格进行多个选择运算
选择条件的排列顺序对性能有较大影响,因为不仅影响索引的选取,而且关系到临时表的大小。现以下面的查询语句为例进行说明:
select * from customer
where city=’beijing’ and fname=’li’
若表中存在100万条记录,其中city=’beijing’的10万,fname=’li’的为2万,其中city=’beijing’的 为2千,在SQL Server中,查询条件的选取是从左到右使用的,因而,执行第一个条件结果返回一个10万行的临时表,然后再从中进行选择,从而得到 最终结果。如果把选择条件改为where fname=’li’ and city=’beijing’,则先得到一个2万行的临时表,再得到同样的结 果。由此可见,选择条件的选取极大的影响着查询语句的计算量,所以,要提高查询的响应速度,可以将较严格的条件写在前面,较弱的条件放在后面。
相关文章推荐
- SQLServer inner join 不先执行where条件的优化
- mysql5.7官网直译SQL语句优化--where条件查询优化
- SQL优化经典案例----外连接where条件位置优化
- left join加上where条件的困惑 --SQL优化
- SQL_WHERE条件的优化
- 要提高SQL查询效率where语句条件的先后次序应如何写使你的SQL 语句完全优化
- SQL优化 查询语句中,用 inner join 作为过滤条件和用where作为过滤条件的区别
- 要提高SQL查询效率where语句条件的先后次序应如何写 使你的 SQL 语句完全优化
- 4000 SQL之解决where 1=1 问题及优化多条件查询
- SQL优化经典案例----外连接where条件位置优化
- SQL查询优化,注意where条件的顺序
- SQL查询的where条件优化之一
- SQL查询优化,注意where条件的顺序
- 【转】ACCESS中如何在SQL语句的WHERE条件中加日期条件
- 要提高SQL查询效率where语句条件的先后次序应如何写
- 尽可能避免在where条件或者join时的on条件中使用case函数(T-SQL)
- SQL--表达式,条件语句,运算和WHERE子句 (2)
- SQL 指令:SELECT "栏位名" FROM "表格名" WHERE "条件"
- 外连接 ON 条件的三个作用 SQL中on条件与where条件的区别
- 替代SQL语句WHERE条件中OR关键词