作者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