gpt4 book ai didi

mysql - 优化 "JOIN"查询

转载 作者:行者123 更新时间:2023-11-29 23:54:12 26 4
gpt4 key购买 nike

这是我的源代码查询

SELECT `truyen`.*, MAX(chapter.chapter) AS last_chapter
FROM (`truyen`)
LEFT JOIN `chapter` ON `chapter`.`truyen` = `truyen`.`Id`
WHERE `truyen`.`title` LIKE \'%%\'
GROUP BY `truyen`.`Id`
LIMIT 250

当我在 iFastnet 主机上安装它时,由于连接,它导致超过 500,000 行被检查,并且查询被阻止(这将使用超过 100% 的 CPU,最终会导致服务器不稳定)。
我还尝试在查询之前添加这一行,它解决了上面的问题,但导致另一个问题,使得某些函数无法正确运行

mysql_query("SET SQL_BIG_SELECTS=1");

如何在不购买其他主机的情况下解决此问题?
谢谢。

最佳答案

您可能正在寻找 INNER JOIN。这将删除不匹配的结果。我发现 INNER JOIN 比 LEFT JOIN 更快。

但是,我不确定您真正想要的结果是什么。但因为您正在使用 GROUP BY,所以看起来 INNER JOIN 可能适合您。

我建议的一件事是将其生成的查询复制并粘贴到 SQL 中,并在其前面加上 DESCRIBE。

因此,如果查询最终是:

SELECT truyen.*, MAX(chapter.chapter) AS last_chapter FROM truyen
LEFT JOIN chapter ON chapter.truyen = truyen.Id
WHERE truyen.title LIKE '%queryString%'

您可以输入:

DESCRIBE SELECT truyen.*, MAX(chapter.chapter) AS last_chapter FROM truyen
LEFT JOIN chapter ON chapter.truyen = truyen.Id
WHERE truyen.title LIKE '%queryString%'

这将告诉您是否可以在表中添加索引以更快地加入。

我希望这至少能为您指明正确的方向。

Michael Berkowski 似乎同意索引,您可以从 DESCRIBE 中看到这一点。

关于mysql - 优化 "JOIN"查询,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25453184/

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