且构网

分享程序员开发的那些事...
且构网 - 分享程序员编程开发的那些事

sql查询工作非常缓慢.

更新时间:2023-11-29 20:35:16

我想要来自emailinfo表的电子邮件,其中没有包含来自keywordinfo表的关键字.

I want emails from emailinfo table which does not contains keywords from keywordinfo table.

SELECT  [email]
FROM emailinfo
WHERE NOT [email] IN(SELECT [keyword] AS [email]
                    FROM keywordinfo
                    WHERE [keyword] like '%'+ keyword +'%' )


WITH keywords AS
(
  SELECT
    keyword
  FROM
    keywordinfo
)

SELECT
  emailinfo.email
FROM
  emailinfo
WHERE
  emailinfo.email NOT LIKE '%' + keywords.keyword + '%'


该查询将始终花费很长时间.您的解决方案需要不同的设计:当收到一封新电子邮件时,检查它的关键字,然后将新条目添加到包含emailid和keywordid的链接表中.在电子邮件到达时执行此额外步骤所需的时间并不重要.以后再搜索时,不再需要全文搜索.
That query will always take a long time. You need a different design for your solution: When a new email arrives, check it for the keywords, and add new entries to a linking table containing emailid and keywordid. The time required for doing that extra step at email arrival does not matter. When you search later on, no full text search is required anymore.