请教一下CHARINDEX 的性能问题???

Lostinet 2007-08-23 07:43:19
同样的查询,

用LIKE,和用CHARINDEX,

生成的查询计划完全不同.

为什么会这样??

...全文
451 17 打赏 收藏 转发到动态 举报
写回复
用AI写文章
17 条回复
切换为时间正序
请发表友善的回复…
发表回复
wujinjian2008n 2009-09-17
  • 打赏
  • 举报
回复
我测试过 100w 条数据,性能都差不多,都很低
zhengzeng 2009-09-17
  • 打赏
  • 举报
回复
下载一个工具 LECCO SQL Expert,就可以解决你的问题。
mugua604 2009-09-17
  • 打赏
  • 举报
回复
考虑使用like,没办法使用like的时候才使用charindex
guguda2008 2009-09-17
  • 打赏
  • 举报
回复
讨论过也测试过,LIKE可能用到索引,CHARINDEX除了在聚集索引上都用不到索引
yang0000meng 2009-09-17
  • 打赏
  • 举报
回复
期待系统讲解,wearelearn.net。
这里有一篇
charindex代替like并非"更快更全面"
http://blog.csdn.net/jinjazz/archive/2009/09/14/4551008.aspx
sp4 2007-08-24
  • 打赏
  • 举报
回复
如上面说,有些情况下是like明显是要快于charindex的。

而就like '%adsl%' 和 charindex('adsl',field )>0这个没有区别的,没有快慢之分
iamltd 2007-08-23
  • 打赏
  • 举报
回复
charindex用不到索引

like在左匹配的时候可以使用索引

所以,like在部分情况下比charindex效率高,其他时候效率一样的
Limpire 2007-08-23
  • 打赏
  • 举报
回复
学习了,确实相差无几,我测试10W数据,charindex()快几十毫秒。
simonhehe 2007-08-23
  • 打赏
  • 举报
回复
楼上的只是说到了like用法的一部分
simonhehe 2007-08-23
  • 打赏
  • 举报
回复
http://blog.csdn.net/simonhehe/archive/2007/08/23/1756581.aspx

有一段是讲charindex和like的比较,可以看一下
Limpire 2007-08-23
  • 打赏
  • 举报
回复
select * from tb where field like 'asd%' --这个可以用field字段的索引,
select * from tb where charindex('asd',field )>0 --这个好像不能用索引。
个人感觉,请高手指正,呵呵。

---------------

又经仔细观察查询计划,都用不到索引,都要扫描整个表:Table Scan
Lostinet 2007-08-23
  • 打赏
  • 举报
回复
我也认为charindex要快.

不过查询分析器告诉我like更快.

所以才不明白,上来问问高手.
Limpire 2007-08-23
  • 打赏
  • 举报
回复
个人测试,charindex 要快上那么一点点。
dobear_0922 2007-08-23
  • 打赏
  • 举报
回复
select * from tb where field like 'asd%' --这个可以用field字段的索引,
select * from tb where charindex('asd',field )>0 --这个好像不能用索引。
个人感觉,请高手指正,呵呵。
Limpire 2007-08-23
  • 打赏
  • 举报
回复
charindex不支持通配符。

对于长字串,如果大概能判断子串的位置,指定搜索位置,应该回快点——纯粹个人见解。
dobear_0922 2007-08-23
  • 打赏
  • 举报
回复
个人感觉效率应该差不多,都是串匹配的问题
47522341 2007-08-23
  • 打赏
  • 举报
回复
是有可能不同;而不是完全不同。

34,576

社区成员

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

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