Это, безусловно, поможет, особенно если вы замените *
на 1
в своем запросе (если вы просто хотите проверить, существует ли строка).
Это может оказать небольшое влияние на DML
.
Создание индекса фактически создает B-Tree
, который имеет такую структуру:
indexed_col1
indexed_col2
...
indexed_colN
row_pointer
в качестве ключа, row_pointer
- смещение файла (для MyISAM
) или значение строки PRIMARY KEY
(для InnoDB
)
Если вы не используете другие столбцы, но проиндексированы в своем запросе, всю необходимую вам информацию можно получить только из ondex, даже не обращаясь к самой таблице.
Если ваши данные по сути уникальны, всегда полезно создать для них индекс UNIQUE
. Это не так для MySQL
, но более продвинутые оптимизаторы (например, SQL Server
) могут использовать тот факт, что данные уникальны, и построить более эффективный план.
См. Эту статью в моем блоге для примера: