Ответ
Технически — можно, но практически — почти всегда плохая идея. Индексы — это компромисс между скоростью чтения и скоростью записи.
Плюсы индексов (зачем они нужны):
- Резко ускоряют поиск (
WHERE), соединения (JOIN) и сортировку (ORDER BY).
Минусы индексов (почему не на каждую колонку):
- Замедляют запись: При каждой
INSERT,UPDATEилиDELETEнеобходимо обновлять все затронутые индексы. - Занимают место на диске.
- Оптимизатор может выбрать неоптимальный индекс, если их слишком много.
Рекомендации по созданию индексов:
- Индексируйте колонки, часто используемые в условиях
WHEREиJOIN. - Отдавайте предпочтение колонкам с высокой селективностью (много уникальных значений).
- Избегайте индексов для колонок с низкой селективностью (пол, статус), если они не часто используются в запросах.
- Используйте составные индексы для часто запрашиваемых комбинаций колонок.
- Анализируйте планы запросов с помощью
EXPLAIN, чтобы принимать обоснованные решения.