索引MySQL列可以改进LIKE搜索吗?

时间:2013-05-27 16:46:07

标签: mysql sql

我正在使用我在其他地方下载的表,他们放了一个名为DATA_SOURCE的列,它连接记录的所有不同数据源,如下所示:

sourceA; sourceB; sourceC; ...

因此,如果我正在寻找sourceB的记录,我必须在%sourceB%上进行搜索。

这显然是一个耗时的查询。我的问题是,如果我要将列DATA_SOURCE编入索引,它是否会提高搜索这些通配符的性能?或者它不会有所作为。

1 个答案:

答案 0 :(得分:6)

没有。索引用于类似搜索,但如果搜索条件没有使用通配符开始

因此LIKE 'Albert %'可转化,而LIKE '%Einstein%'则不会。

原因当然,所有索引都是构造一个内部表,其中列出了按该列排序时的结果,以便将搜索从线性减少到对数复杂度。如果搜索标准以通配符开头,它仍然必须遍历所有可能的值以匹配它们(所谓的表扫描),从而消除了索引的潜在性能增益。