注册 登录  
 加关注
   显示下一条  |  关闭
温馨提示!由于新浪微博认证机制调整,您的新浪微博帐号绑定已过期,请重新绑定!立即重新绑定新浪微博》  |  关闭

北漂的小羊

Java编程,开发者,程序员,软件开发,编程,代码。新浪微博号:IT国子监

 
 
 

日志

 
 
关于我

在这里是面向程序员的高品质IT技术学习社区,是程序员学习成长的地方。让我们更好地用技术改变世界。请关注新浪微博号: IT国子监(http://weibo.com/itguozijian)

网易考拉推荐

sqlserver数据库中索引失效的问题讨论  

2011-05-14 09:09:53|  分类: SQL Server |  标签: |举报 |字号 订阅

  下载LOFTER 我的照片书  |

有关于数据库中索引失效的问题,网上也有相关的讨论。不过他们是针对oracle数据库进行讨论的。那么在sql server数据库中索引

什么时候会失效呢。

首先,所谓失效。并不真的就是这个索引被删除了。而是在这些情况下,DBMS不会检索索引列表了。执行速度和没有这个索引时的速

度一样。但是再执行另外的一条语句。同样索引可以正常起作用。所以索引的失效是针对某条sql语句的,而不是针对索引本身的。那

么在哪些情况下,确切的说是在哪类语句执行时索引不起作用呢。总结如下:

1.索引字段进行判空查询时。也就是对索引字段判断是否为NULL时。语句为is null 或is not null。
  比如:select * from temp where time is null此时就不检索time字段上的索引表了。也就是索引在这条语句执行时失效了。接着

再执行select * from temp where time = '2010-06-01'此时就会检索索引表了。索引又起作用了。

2.对索引字段进行like查询时。比如:select * from temp where des like '%王某某'。网上有的例子说like 'xx%'索引起作用。我

没试过。

3.判断索引列是否不等于某个值时。‘!=’操作符。比如:select * from temp where amount != 0.

4.对索引列进行运算。这里运算包括+-*/等运算。也包括使用函数。比如:
  select * from temp where amount+count>10 此时索引不起作用。
  select * from temp where round(amount)>10 此时索引也不起作用。
 也就是说如果不是直接判断索引字段列,而是判断运算或其它函数处理后的索引列。索引均不起作用。

  评论这张
 
阅读(509)| 评论(0)
推荐 转载

历史上的今天

评论

<#--最新日志,群博日志--> <#--推荐日志--> <#--引用记录--> <#--博主推荐--> <#--随机阅读--> <#--首页推荐--> <#--历史上的今天--> <#--被推荐日志--> <#--上一篇,下一篇--> <#-- 热度 --> <#-- 网易新闻广告 --> <#--右边模块结构--> <#--评论模块结构--> <#--引用模块结构--> <#--博主发起的投票-->
 
 
 
 
 
 
 
 
 
 
 
 
 
 

页脚

网易公司版权所有 ©1997-2016