Привет, мне нужна помощь с этой проблемой. Я работаю в веб-приложении, и для базы данных я использую sqlite. Может кто-нибудь помочь мне с одним запросом из Databse, которые должны быть оптимизированы == быстро =)Помогите с оптимизацией SQL-запроса
У меня есть таблица х:
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_INGREDIENT является ингредиентом, который блюдо состоит из: так в моем случае блюдо с идентификатором 1 производится с ингредиентами с идентификаторами 2,3
в этой таблице а имеют более 15000 строк, и мой вопрос:
я нужен запрос, который будет получать ряды, где я могу найти ids блюд, заказанных по счету разлагающихся ASC, которые я добавил в свой алгоритм.
нелогич-: Foo (2,4) будет строки в следующем порядке:
ID_DISH | count(stillMissing)
10 | 2
1 | 3
Блюдо с ID 10 имеет компоненты с идентификатором 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
работает, но это медленно ....
+1 за изобретение 'optimazing. Какая ИМО должна означать «выполнить потрясающие оптимизации». – karim79
Какой индекс вы добавили на эту таблицу? – zsong