Работа вам нужна срочно. Не волнуйтесь, уложимся!
- 22423 авторов готовы помочь тебе.
- 2402 онлайн
решай задачу по фотографии
Предмет: Базы данных
Раздел: Индексы в SQL, оптимизация запросов
В базе данных есть таблица person
:
CREATE TABLE person(
id INT,
first_name VARCHAR,
last_name VARCHAR,
age INT
);
Создан индекс:
CREATE INDEX person_name_idx ON person(last_name, first_name);
Нужно определить, какие из приведённых SQL-запросов будут использовать индекс person_name_idx
.
Индекс person_name_idx
построен по двум столбцам в следующем порядке:
last_name
first_name
Это означает, что индекс может быть использован в запросах, где фильтрация начинается с поля last_name
. Если в фильтре отсутствует last_name
, то индекс не будет использован, даже если присутствует first_name
.
*[ ] SELECT FROM person WHERE last_name = 'Кузнецова'**
✅ Да, индекс будет использован, потому что используется первое поле индекса (last_name
).
*[ ] SELECT FROM person WHERE first_name = 'Алиса'**
❌ Нет, индекс не будет использован, потому что first_name
— второе поле в индексе, а первое (last_name
) не участвует в фильтрации.
*[ ] SELECT FROM person WHERE name = 'Алиса Кузнецова'**
❌ Нет, индекс не будет использован, и вообще такой запрос вызовет ошибку, потому что в таблице нет поля name
.
*[ ] SELECT FROM person WHERE first_name = 'Алиса' AND last_name = 'Кузнецова'**
✅ Да, индекс будет использован, потому что оба поля из индекса участвуют в фильтрации, и порядок соответствует порядку в индексе (last_name
, затем first_name
).
Правильные варианты:
Если будут вопросы по работе индексов — с радостью объясню подробнее!