2013-09-01 60 views
0

對於多找一套我用:多發現設置

... 
FROM Table1 a, Table2 b 
WHERE CONCAT(',',REPLACE(a.options,',',',,'),',') LIKE CONCAT('%,',REPLACE(b.options,',',',%,'),',%') 

a.options = '1,2,3,4,5' VARCHAR() 
b.options = '2,5,6,9,10' VARCHAR() 

位數a.optionsb.options總是按升序排序。 結果如下:

WHERE ',1,,2,,3,,4,,5,' LIKE '%,2,%,5,%,6,%,9,%,10,%' 

它運作良好,但速度並不快。 如何使此查詢更快?

+0

1.標準化您的數據。 – Strawberry

+0

@Strawberry你是什麼意思? –

+1

你是什麼意思? ;-) – Strawberry

回答

0

只要有一些數據可以談論,對SQL集的類似和字符串操作就會變慢。無論如何。你應該重新思考爲什麼你需要這樣做或者改變表格結構。 我解決了一個這樣的問題,有一個計算列做了插入前的所有預計算,然後堅持。所以我對計算列進行了查詢。