作者dontkissme (不要親我)
看板Database
標題[SQL ] LIKE ,AND , 跟 OR
時間Tue Nov 22 14:57:28 2011
我想SELECT出資料,規則是
LIKE X AND ( A or B or C or.... Z)
找了很久以為可以用 IN 或 LIKE IN 得到解答
或者是 LIKE %X% AND LIKE (%A%,%B%,....)
結果不行,找不到或是網路上找的方法與法錯誤
昨天請益學長,它先要我用subquery去找!
後來我發現一個致命的問題,就是效率!
目前大約先建立3萬5千筆資料,學長說因為%%是效率大魔王..
因為我這方面比較薄弱,以前都是寫TOY Case這部分就沒炸出來。
所以學長叫我先把正規劃做好....這是最好的解答..
如果以這筆資料:【小明和小華是我的好朋友,對了,小美和小英也是】
條件是:LIKE 小明 AND LIKE (小華 or 小美 or 小英)
小明為必要條件,小華和小美跟小英有一個即可!
如果這樣的情況請問大家會怎麼搜尋?
另一個問題是如何做到,符合程度較高的句子優先輸出
要是我我只會用最笨的方法...先寫最嚴苛的條件(小明,小華,小美,小英)
再寫其次,但是結果就想到條件排列組合的問題= =我就倒了..
這部分我真的超弱的..
不知道各位高手會怎麼解這個問題!
我想了解一下,謝謝
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 140.122.46.156
1F:推 evernever:學長提的正規化可能是想用PK/FK來代替like 11/22 19:33
2F:推 iamnotfat:用like 會造成full table scan...效率會有問題~ 11/24 14:27
3F:→ bozen:where x like '%明%' and (x like '%華%' or x like '%美%') 11/29 21:43
4F:→ bozen:語法可用,就算%%是大魔王也得用,筆數35k算少了, 11/29 21:44
5F:→ bozen:但還要看欄位格式 如果是Text,且都是長文章就會慢~~ 11/29 21:45
6F:→ bozen:如果是Text就用 fulltext來做吧~ 11/29 21:45