gpt4 book ai didi

mysql全文搜索联合执行缓慢

转载 作者:行者123 更新时间:2023-11-29 13:22:45 24 4
gpt4 key购买 nike

我有一个数据库,必须从 MS SQL 迁移到 MySQL。我能够将其迁移过来并让一切(大部分)启动并运行,但性能在以下查询中受到了很大影响。

在 MS SQL 中,查询运行时间不到 2 秒,但现在在 MySQL 中需要 1-2 分钟。在 MS SQL 中,它使用 CONTAINS 运算符而不是 MATCH,但是当我转移到 MySQL 时,我对主题和注释列创建了全文索引。

有两个单独的表 - 都包含“主题”和“完整注释”字段。该数据库非常大,我正在尝试进行自由文本搜索,在任一表的任一字段中查找匹配项。

如果有人可以帮助我优化查询,我将非常感激。

SELECT cs.SWCaseID, cs.SWSubject, cs.SWNote
FROM tblSCasesSearch cs
WHERE cs.SWCaseID in
(SELECT cs.SWCaseID
FROM tblSCasesSearch cs
WHERE MATCH (cs.SWSubject, cs.SWNote) AGAINST ('SEARCH VALUE' IN BOOLEAN MODE)
union
SELECT csn.SWCaseID
FROM tblSCaseNotesSearch csn
WHERE MATCH (csn.SWSubject, csn.SWNote) AGAINST ('SEARCH VALUE' IN BOOLEAN MODE))
LIMIT 50

最佳答案

尝试将查询重写为显式联接:

SELECT cs.SWCaseID, cs.SWSubject, cs.SWNote
FROM tblSCasesSearch cs left outer join
(SELECT distinct cs.SWCaseID
FROM tblSCasesSearch cs
WHERE MATCH (cs.SWSubject, cs.SWNote) AGAINST ('SEARCH VALUE' IN BOOLEAN MODE)
) scs
on cs.SWCaseId = scs.SWCaseId left outer join
(SELECT distinct cs.SWCaseID
FROM tblSCaseNotesSearch cs
WHERE MATCH (cs.SWSubject, cs.SWNote) AGAINST ('SEARCH VALUE' IN BOOLEAN MODE)
) scns
on cs.SWCaseId = scns.SWCaseId
WHERE scs.SWCaseId is not null or scns.SWCaseId is not null
limit 50;

关于mysql全文搜索联合执行缓慢,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20574353/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com