Я обнаружил, что код внизу выполняется более 10 минут на моем сервере. Сам сервер достаточно хорош, и я не могу найти подходящего объяснения этому.
Я использую Joomla 1.6.3, данные переносятся из Joomla 1.5.23 с использованием jUpgrade, а версия клиента MySQL - 5.1.45.
SELECT a.*,COUNT(DISTINCT m1.id) AS count_published,COUNT(DISTINCT m2.id) AS count_unpublished,COUNT(DISTINCT m3.id) AS count_trashed
FROM `j16_menu_types` AS a
LEFT JOIN `j16_menu` AS m1 ON m1.menutype = a.menutype AND m1.published = 1
LEFT JOIN `j16_menu` AS m2 ON m2.menutype = a.menutype AND m2.published = 0
LEFT JOIN `j16_menu` AS m3 ON m3.menutype = a.menutype AND m3.published = -2
GROUP BY a.id
ORDER BY a.id asc;
Я был бы очень рад, если бы кто-нибудь мог мне помочь, потому что у меня большие проблемы:)
P.s. Я скачал БД и проверил его на своем компьютере - все то же самое, время выполнения ужасно. Есть ли способ решить эту проблему? Или, может быть, удалить эту часть SQL без значительных изменений в администрации Joomla?
Ну, на моем компьютере это было сделано довольно быстро, но результат все еще далек от того, который удовлетворил бы меня.
![enter image description here](https://i.stack.imgur.com/l9zje.png)
EDIT
Ну, я нашел сообщение об ошибке этой проблемы. http://joomlacode.org/gf/project/joomla/tracker/?action=TrackerItemEdit&tracker_item_id=24868
И решение:
CREATE INDEX idx_menu_published ON j16_menu (published);
Однако я не уверен, как это повлияет на администрацию. Есть кто-то, кто мог бы кратко рассказать, как работает эта часть, и мне следует отредактировать код ядра Joomla или просто использовать приведенный выше код на MySQL один раз. Мне интересно, должен ли я индексировать таблицу каждый раз, когда редактирую меню.