parser

Написать ответ на текущее сообщение

 

 
   команды управления поиском

Как оптимизировать запрос с filesort?

Mikasto 24.09.2007 11:16

Запрос вроде бы простой, но почему-то невозможно избавиться от Using temporary; Using filesort.
Может быть это невозможно для такого типа запросов? ПОмогите если знаете..

Таблицы:
CREATE TABLE `organizations` (
  `id` int(10) unsigned NOT NULL AUTO_INCREMENT,
  `title` varchar(255) NOT NULL DEFAULT '',
  PRIMARY KEY (`id`),
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
и
CREATE TABLE `usage_groups` (
  `id` int(10) unsigned NOT NULL AUTO_INCREMENT,
  `id_package` int(10) unsigned NOT NULL DEFAULT '0',
  `id_organization` int(10) unsigned NOT NULL DEFAULT '0',
  PRIMARY KEY (`id`),
  KEY `FK_usage_group_package` (`id_package`),
  KEY `FK_usage_group_organiuzation` (`id_organization`),
  KEY `id_package` (`id_package`,`id_organization`),
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
EXPLAIN (незначимые строки убраны):
id select_type table type    key	  rows	Extra
1  SIMPLE       ug    index   id_package 2657	Using index; Using temporary; Using filesort
1  SIMPLE       o      eq_ref PRIMARY    1
И запрос:
SELECT
      o.title
FROM
    `organizations` o
    JOIN `usage_groups` ug ON o.id = ug.`id_organization`
GROUP BY o.id
ORDER BY ug.`id_package` DESC
LIMIT 0, 10
Помогите убрать filesort! Время выполнения в разы замедляется..