История изменений
Исправление theNamelessOne, (текущая версия) :
А у тебя сканирование временной таблицы получается, или я ошибаюсь?
Да, в моём примере получается HashAggregate, который использует временную хеш-таблицу. Можно добавить сортировку по группируемому столбцу, тогда будет GroupAggregate, который не использует временных таблиц:
SELECT images.filename
FROM images
NATURAL JOIN images_tags
NATURAL JOIN tags
WHERE tags.tag IN ('2017', 'лето', 'геленджик')
GROUP BY images.filename
HAVING COUNT(images.filename) = 3
ORDER BY images.filename;
Правда, теперь у нас появляется сортировка.
Исходная версия theNamelessOne, :
А у тебя сканирование временной таблицы получается, или я ошибаюсь?
Да, в моём примере получается HashAggregate, который использует временную хеш-таблицу. Можно добавить сортировку по группируемому столбцу, тогда будет GroupAggregate который не использует временных таблиц:
SELECT images.filename
FROM images
NATURAL JOIN images_tags
NATURAL JOIN tags
WHERE tags.tag IN ('2017', 'лето', 'геленджик')
GROUP BY images.filename
HAVING COUNT(images.filename) = 3
ORDER BY images.filename;
Правда, теперь у нас появляется сортировка.