mysql like 效率低下研究

内容来自 http://blog.163.com/dreamman_yx/blog/static/2652689420105241733620/

第一种 (like '%sss%') like的内容如果前后都使用了%的话,是无法使用索引的,这应该是慢的主要原因
第二种(select ... like '%sss%')先select了一次,相当于用hash索引的方式过滤了一遍,结果集小了很多
第三种(charindex('sss',XXX)<>0 )使用了文本索引,所以速度比较快

在sql语句里,"like","not in","not exists"这几个是比较慢的,原因在于它们的实现机制。例如,如果我们在一个“字符串”里找查“另一个字符串”,而且这个字符串有通配符(%),不管是用顺序查找还是二分查找,效率都不见得太高。like比较符,如果用的是like "大药房%",这种方式会用索引扫描,但如果是 like "%大药房%",这种方式会用表扫描,该字段上的索引不起作用,速度会非常慢,如果你的记录很多,该字段很大的话。

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容