当前位置: 数据库>sqlserver
导致SQL Server索引不可用的几种Sql语句写法
来源: 互联网 发布时间:2014-08-29
本文导语: 在sql server中,使用索引可以快速访问到数据库中的信息,这也是优化SQL查询速度最常用也是最有效的方法。 创建了索引后,是不是所有Select语句都会用到索引呢? 当然不是了,不好的SQL语句的写法往往会使SQL引擎无法使用索...
在sql server中,使用索引可以快速访问到数据库中的信息,这也是优化SQL查询速度最常用也是最有效的方法。
创建了索引后,是不是所有Select语句都会用到索引呢?
当然不是了,不好的SQL语句的写法往往会使SQL引擎无法使用索引,从而失去了查询速度上的优势。
比如下面这些sql查询语句,虽然有索引,但都没有起到索引的作用,大家可以参考看看。
1,对索引列使用了函数或计算
假如表table1的索引列是id,但如下语句会使索引无效
代码示例:
select * from table1 where dbo.fn_fun(id)='xxx'
2,对索引列使用了Like ‘%X’或Like ‘%X%’
引用上面的表,如下语句也会使索引无效
代码示例:
select * from table1 where id like '%xx%'
3,在组合索引的第1列不是使用最多的列
4,在where子句中使用了In(子查询)
如下语句会使索引无效
代码示例:
select * from table1 where id in (select id from table2)
5,数据类型转换将导致不能利用索引
如下语句会使索引无效
代码示例:
select * from table1 where cast(id as varchar(50))='xxx'
6,负向比较将导致不能利用索引
如下语句会使索引无效
代码示例:
select * from table1 where 'xxx'=id
一点小经验,总结一下,分享出来,供大家参考。
在以后遇到sql server索引时,记得留意这些问题哦。