我使用,我下載了其他地方的表,他們把一個叫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