Ниже представлена структура таблицы: -Заказать MySQL по оптимизации
Статья: ID, Название, Описание изделия, PublishedDateTime, ViewsCount, Опубликовано
Первичный ключ: ID
Запрос Used:
Select Title FROM Article ORDER By ViewsCount DESC, PublishedDateTime ASC
Как вы можете видеть, я смешиваю ASC и DESC & в соответствии с заказом MySQL. Оптимизация индексов не будет использоваться.
Я думал использовать составной индекс, используя ViewsCount и PublishedDateTime. Вы рекомендуете использовать 2 разных ключа вместо использования составного индекса. Но затем я прочитал, что составной индекс лучше, чем использование 2 разных ключей (если оба поля будут использоваться).
Некоторые больше информации разделяют:
Таблица содержит более 550K + записи, а также у меня возникли большие проблемы в добавление и удаление индексов для целей тестирования. Что вы, ребята, рекомендуете? Должен ли я тестировать небольшой образец?
Ниже приведены еще некоторые идеи:
Индексы Б:
1) ViewsCount
2) PublishedDateTime.
3) ViewsCount & PublishedDateTime (назван ViewsDate_Index)
А) EXPLAIN запросов смешивания ASC и DESC:
EXPLAIN SELECT title FROM `article` ORDER BY ViewsCount DESC , PublishedDateTime ASC LIMIT 0 , 20
====+===============+=========+======+===============+=====+=========+======+========+================+
id | select_type | table | type | possible_keys | key | key_len | ref | rows | Extra
1 | SIMPLE | article | ALL | NULL | NULL| NULL | NULL | 550116 | Using filesort
====+===============+=========+======+===============+=====+=========+======+========+================+
B) EXPLAIN запроса, используя тот же порядок сортировки:
EXPLAIN SELECT title FROM `article` ORDER BY ViewsCount DESC , PublishedDateTime DESC LIMIT 0 , 20
====+===============+=========+=======+===============+=================+=========+=============+========+================+
id | select_type | table | type | possible_keys | key | key_len | ref | rows | Extra
1 | SIMPLE | article | index | NULL | ViewsDate_Index | 16 | NULL | 550116 |
====+===============+=========+=======+===============+=================+=========+=============+========+================+
Вы можете видеть, что если ViewsCount и PublishedDateTime находятся в одном порядке сортировки, то он использует индекс ViewsDate_Index. Единственное, что мне показалось странным, это то, что possible_keys NULL, и все же он выбирает индекс. Может кто-нибудь объяснить причину этого.
Также любые советы по добавлению индексов в эту таблицу, поскольку для добавления нового индекса требуется много времени. Любое обходное решение или помощь в этом отношении будут оценены.
У вас есть тестовый чехол? Если нет, у вас нет проблемы с производительностью, и что-то еще «преждевременно». Если да, то вы можете попробовать все и запустить профили производительности, чтобы определить, какие из них лучше всего подходят для вас. –
аналогичный эмитент: http://stackoverflow.com/questions/4599301/mysql-compound-index-not-being-used – greut
@pst: Я изменил сообщение и поделился некоторыми более подробными сведениями. – ConcealedIdentity