关于like与索引的问题。

种草德鲁伊 2010-09-03 08:35:21
网上的说法 : 将通配符放在前面 like '%aa' 这样不会使用索引,像 like 'aa%' 这样会使用索引。

自己试验了一下,在SQL2005的实际执行计划中可以看到 like 'aa%' 使用了表扫描,like '%aa' 才是用了索引。

请教一下,实际上like是否使用索引和什么情况有关呢
...全文
342 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
缪军 2012-09-28
  • 打赏
  • 举报
回复
在MSDN讨论like和通配符的文档中确实提到:
使用%开头的通配符无法使用索引,

但是,另一方面,
你的SELECT列表中的字段的索引仍然是可能会被查询优化器使用,
无论他是否出现在你的where子句中,
结合第一段的描述,
由于无法定位查询开始的位置,索引不一定对你的where子句的性能提高起到作用
种草德鲁伊 2010-09-03
  • 打赏
  • 举报
回复
还是没弄明白,试过几种情况,有时候通配符放哪都会使用索引,求高手们解释一下..
fanzhouqi 2010-09-03
  • 打赏
  • 举报
回复
这个,选择东西的多少有关。select 出来的东西多就不走索引了。
广交天下好友 2010-09-03
  • 打赏
  • 举报
回复
路过!路过!
幸运的意外 2010-09-03
  • 打赏
  • 举报
回复
网上说的有理。其实比较一下两种查询的速度就可以得出结论。通配符在具体字符后,索引起作用。
即like ‘aa%’索引起作用
xiaoxiao8372 2010-09-03
  • 打赏
  • 举报
回复
你说的对,确实是这样!

34,593

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server相关内容讨论专区
社区管理员
  • 基础类社区
  • 二月十六
  • 卖水果的net
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧