gpt4 book ai didi

mysql - 嵌套查询优化

转载 作者:行者123 更新时间:2023-12-01 00:21:25 26 4
gpt4 key购买 nike

SELECT id
FROM `events`
WHERE heading LIKE '%somestr%'
AND guests_since_start > 10
AND (SELECT COUNT(*)
FROM `submissions`
WHERE `submissions`.event_id = `events`.id)!=0;

目前这个查询使我的服务器崩溃。这个想法是从提交表中具有相应行的事件表中获取所有 id(事件和提交由 event_it 链接。只要行数不为 0,那么我希望显示这些记录.

问题是 events 表有大约 3,000 条记录,而 submissions 表有大约 290,000 条记录。

如有任何帮助,我们将不胜感激。

最佳答案

直接加入将为您过滤它并提高效率:

SELECT DISTINCT id
FROM `events`
INNER JOIN `submissions`
ON `submissions`.event_id = `events`.id
WHERE heading LIKE '%somestr%'
AND guests_since_start > 10

需要使用 DISTINCT 来过滤掉重复项。这会稍微降低效率(因为 MySQL 现在必须删除重复项),但总的来说它会比任何子查询快得多。 submissions.event_idevents.id 上的索引将进一步提供帮助。

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

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