gpt4 book ai didi

sql - 帮助优化 SQL 查询

转载 作者:行者123 更新时间:2023-12-03 17:05:26 25 4
gpt4 key购买 nike

您好,我需要一些帮助来解决这个问题。我正在使用 web 应用程序,对于数据库,我正在使用 sqlite。有人可以帮我解决一个必须优化的数据库查询吗 == 快速 =)

我有表x:

ID | ID_DISH | ID_INGREDIENT
1 | 1 | 2
2 | 1 | 3
3 | 1 | 8
4 | 1 | 12

5 | 2 | 13
6 | 2 | 5
7 | 2 | 3

8 | 3 | 5
9 | 3 | 8
10| 3 | 2

....ID_DISH 是不同菜肴的 id,ID_INGREDIENT 是菜肴的成分:所以在我的例子中,id 为 1 的菜是用 id 为 2,3 的配料制成的

在这个表中有超过 15000 行,我的问题是:

我需要查询,它将获取行,在这些行中我可以找到按成分 ASC 计数排序的菜肴的 ID,我已将其添加到我的算法中。

例子:foo(2,4)将按以下顺序排列:

ID_DISH | count(stillMissing)
10 | 2
1 | 3

id 为 10 的菜有 id 为 2 和 4 的成分,并且没有再有 2 个,则为

我的查询是:

SELECT
t2.ID_dish,
(SELECT COUNT(*) as c FROM dishIngredient as t1
WHERE t1.ID_ingredient NOT IN (2,4)
AND t1.ID_dish = t2.ID_dish
GROUP BY ID_dish) as c
FROM dishIngredient as t2
WHERE t2.ID_ingredient IN (2,4)
GROUP BY t2.ID_dish
ORDER BY c ASC

可以,但是速度很慢....

最佳答案

select ID_DISH, sum(ID_INGREDIENT not in (2, 4)) stillMissing 
from x
group by ID_DISH
having stillMissing != count(*)
order by stillMissing

这是解决方案,我以前的查询工作 5 - 20 秒,这次工作大约 80 毫秒

关于sql - 帮助优化 SQL 查询,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4619679/

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