LINUX.ORG.RU

История изменений

Исправление 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;

Правда, теперь у нас появляется сортировка.