MySQL slow group by / order by

Следующий запрос относительно медленный (0,7 секунды с ~ 6k строк)

SELECT items.*, COUNT(transactions.ID)
   FROM items
  INNER JOIN users ON (items.USER = users.ID)
   LEFT JOIN transactions ON (items.id = transactions.item)
  WHERE items.ACTIVE = 1
    AND items.DELETED_AT IS NULL
  GROUP BY items.ID
  ORDER BY items.DATE DESC
  LIMIT 20

, но значительно ускоряется при упорядочивании по items.ID DESC вместо items.DATE. Транзакции соединение выполняется с большой таблицей (~ 250 тыс. строк) по принципу "один ко многим". Столбец даты имеет индекс.

Есть ли способ в целом улучшить производительность ORDER BY?

EDIT: индексы на items.user, transaction.item и items.date. Items имеет 49 столбцов, пользователей 76 и транзакции 17.

6
задан Seliquity 25 December 2011 в 21:06
поделиться