我使用,我下载了其他地方的表,他们把一个叫DATA_SOURCE
列其所有串接一个记录的不同数据源,像这样:可以对MySQL列编制索引以改善LIKE搜索吗?
sourceA; sourceB; sourceC; ...
所以,如果我要寻找记录从sourceB
,我会做一个像搜索上%sourceB%
。
这显然是一个耗时的查询。我的问题是,如果我要索引列DATA_SOURCE
,它是否会提高这些通配符搜索的性能?或者它不会有所作为。
我使用,我下载了其他地方的表,他们把一个叫DATA_SOURCE
列其所有串接一个记录的不同数据源,像这样:可以对MySQL列编制索引以改善LIKE搜索吗?
sourceA; sourceB; sourceC; ...
所以,如果我要寻找记录从sourceB
,我会做一个像搜索上%sourceB%
。
这显然是一个耗时的查询。我的问题是,如果我要索引列DATA_SOURCE
,它是否会提高这些通配符搜索的性能?或者它不会有所作为。
号索引将像搜索被使用,但仅如果搜索绕圈不以通配符开始。
所以LIKE 'Albert %'
将可转位,而LIKE '%Einstein%'
不会。
之所以这样,是当然,所有的指数并是构建体,其中所述的结果是当由该列排序,以减少从线性到对数复杂的搜索的内部表的。如果搜索绕圈使用通配符启动时,它仍然会遍历所有可能的值来匹配他们(所谓表扫描),从而消除索引的潜在性能增益。
你会好起来的,改制成为这个[第一范式(http://en.wikipedia.org/wiki/First_normal_form),那么你就能够满意指数吧。 –
我同意,谢谢马丁。 – ktm5124