У полей после "ORDER BY" или "WHERE" может быть индекс (PRIMARY, UNIQUE, INDEX) в mysql?
Рассмотрим таблицу со следующими столбцами:
ID | AddedDate | CatID | Title | Description | Status | Editor
В этих запросах есть ID
, AddedDate
и CatID
может иметь индекс?
SELECT *
FROM table WHERE ID = $id
SELECT *
FROM table
ORDER BY ID
SELECT *
FROM table
ORDER BY AddedDate
SELECT *
FROM table
ORDER BY CatID
Вы можете заказать любое поле. Просьба уточнить наш вопрос, если вы хотите узнать больше/что-то еще.
Возможно, вы захотите прочитать ORDER BY
optimization. Там говорится, что поля с индексом могут даже улучшить сортировку, поскольку не нужно делать лишнее (в оптимальном случае).
Update:
Да, вы можете добавить индекс, если хотите (если это то, что вы имеете в виду, это еще не ясно, как указывает OMG Ponies). В общем, нужно сказать, что вы должны добавить индекс в те поля, которые вы часто используете в предложениях WHERE
.
Одним из основных преимуществ наличия индекса является то, что он позволяет выбрать только то, что вам интересно. Альтернативой использованию индекса является "полное сканирование таблицы".
Если у вас нет предложения "where", вы не получите большую выгоду от наличия индексов.
Насколько я знаю, существуют три основных способа упорядочения строк:
Для таблиц, которые соответствуют памяти, MySQL, вероятно, выберет вариант 1. Это означает, что он не будет использовать индекс, даже если он присутствует. Индекс будет просто накладным.
Но индексы светят для больших таблиц. Если таблица слишком большая для памяти, MySQL может избежать мучительной сортировки файлов и полагаться на индекс.
В наши дни память изобилует, а таблицы почти всегда вписываются в память. Я бы добавил только индексы для упорядочения после того, как увидел, что происходит сортировка файла.