当前位置: 代码迷 >> Sql Server >> varchar(60)的字段,30万数据,用Contains,还是Like,该如何解决
  详细解决方案

varchar(60)的字段,30万数据,用Contains,还是Like,该如何解决

热度:93   发布时间:2016-04-27 16:41:59.0
varchar(60)的字段,30万数据,用Contains,还是Like
varchar(60)的字段,30万数据,要对这个字段进行检索
用Contains,还是Like
想得到的数据是Like '%关键字% '这样的效果
都说Like速度慢
这样的量,大家说说有没有必要加全文检索
高手帮忙,谢谢

------解决方案--------------------
建索引
用charindex( '关键字 ',字段)> 0
------解决方案--------------------
Like '%关键字% '
charindex( '关键字 ' , 字段)

对该字段建立索引
------解决方案--------------------
Like '%关键字% ' 这种方式用不上索引。
------解决方案--------------------
用Contains肯定会快(如果列的属性为text,ntext,varchar等)
------解决方案--------------------
三十万没必要建全文索引,在搜索字段上建索引进行查询即可。
如果对多字段进行查询的话可能会慢。
------解决方案--------------------
用函数charindex()和前面加通配符%的LIKE执行效率一样
------解决方案--------------------
Contains是比like快
------解决方案--------------------
没有必要加全文检索

如果是:
where 1=1 and 索引字段 Like '%关键字% '

則索引是不會起作用的

------解决方案--------------------
30w的数据实在是寥寥,Like '%关键字% ' 也没什么问题
------解决方案--------------------
楼主只有自己比较各种方法的效率了,因为其他人没这么大的数据,哈
------解决方案--------------------
如果是varchar类型,charindex 和like 都可以,但是charindex的效果更快

如果是text 类型,数据量比较大,charindex函数无效,用全文索引
------解决方案--------------------
学习过 ..目前还只会用LIKE
------解决方案--------------------
我这二十六万,查聚集索引列很快charindex()方法,
如果多字段查询的话考虑全文索引用contains
------解决方案--------------------
我着40万,用like 没有觉得很慢. 用不同的计算机效率有所不同吧
  相关解决方案