Встречается на собеседованиях • сегодня

Как с помощью EXPLAIN определить необходимость добавления индекса в БД

EXPLAIN показывает план выполнения запроса. Если в выводе виден type: ALL или rows с большим числом, значит MySQL выполняет full table scan - хороший кандидат для индекса.

Пример:

sql
EXPLAIN SELECT * FROM users WHERE email = 'test@example.com';

Если вывод содержит:

text
+----+-------------+-------+------+---------------+------+---------+------+------+-------------+
| id | select_type | table | type | possible_keys | key  | key_len | ref  | rows | Extra       |
+----+-------------+-------+------+---------------+------+---------+------+------+-------------+
|  1 | SIMPLE      | users | ALL  | NULL          | NULL | NULL    | NULL | 1000 | Using where |
+----+-------------+-------+------+---------------+------+---------+------+------+-------------+

Здесь type: ALL и rows: 1000 - явный признак, что нужен индекс:

sql
CREATE INDEX idx_email ON users(email);
Sophi
Софи собрала все вопросы. Тренируйся и получай
офферы быстрее!
Попробовать бесплатноArrow

Следующий вопрос

Это единственный вопрос по вашему фильтру

как отвечать на вопрос
пример собеседования
фреймворки на собеседовании
типичные вопросы junior
интервью вопросы и ответы