[SQL ] LIKE ,AND , 跟 OR

看板Database作者 (不要親我)時間14年前 (2011/11/22 14:57), 編輯推噓2(204)
留言6則, 3人參與, 最新討論串1/1
我想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

11/22 19:33, , 1F
學長提的正規化可能是想用PK/FK來代替like
11/22 19:33, 1F

11/24 14:27, , 2F
用like 會造成full table scan...效率會有問題~
11/24 14:27, 2F

11/29 21:43, , 3F
where x like '%明%' and (x like '%華%' or x like '%美%')
11/29 21:43, 3F

11/29 21:44, , 4F
語法可用,就算%%是大魔王也得用,筆數35k算少了,
11/29 21:44, 4F

11/29 21:45, , 5F
但還要看欄位格式 如果是Text,且都是長文章就會慢~~
11/29 21:45, 5F

11/29 21:45, , 6F
如果是Text就用 fulltext來做吧~
11/29 21:45, 6F
文章代碼(AID): #1EoqVRJ7 (Database)