当前位置: 代码迷 >> Sql Server >> sql 两表查询,该如何处理
  详细解决方案

sql 两表查询,该如何处理

热度:80   发布时间:2016-04-24 09:31:01.0
sql 两表查询
现有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相等去匹配。
  相关解决方案