现有a表
word
黑屏
联想
b表 word (nvarchar(50)) bindex(int) 两列 大概有两千万条数据
我想查b表中 列word 包含 a表 列word中的词 的数据
SELECT a.keyword AS word,a.bindex ,COUNT(1) AS cc
FROM b表 AS a WITH(NOLOCK)
INNER JOIN a表 AS b ON CHARINDEX(b.word,a.word) > 0
WHERE a.word_len > LEN(b.word)
GROUP BY a.keyword,a.bindex
速度特别慢 有啥好办法没奥
------解决思路----------------------
完全模糊匹配的话,2000万是会很慢,换全文检索吧,或者第三方全文检索工具,
------解决思路----------------------
换LIKE试过吗
------解决思路----------------------
应该有预处理。
先把 b表.word 分词,做出单词的全集,并且建立 (b表.bindex,单词id) 的对应。
a表先查出各各单词的单词id,然后用单词id相等去匹配。