Определить, какие из приведённых SQL-запросов будут использовать индекс person_name_idx

Условие:

решай задачу по фотографии

Условие: решай задачу по фотографии

Решение:

Предмет: Базы данных
Раздел: Индексы в 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.


Анализ вариантов:

  1. *[ ] SELECT  FROM person WHERE last_name = 'Кузнецова'**

    Да, индекс будет использован, потому что используется первое поле индекса (last_name).

  2. *[ ] SELECT  FROM person WHERE first_name = 'Алиса'**

    Нет, индекс не будет использован, потому что first_name — второе поле в индексе, а первое (last_name) не участвует в фильтрации.

  3. *[ ] SELECT  FROM person WHERE name = 'Алиса Кузнецова'**

    Нет, индекс не будет использован, и вообще такой запрос вызовет ошибку, потому что в таблице нет поля name.

  4. *[ ] SELECT  FROM person WHERE first_name = 'Алиса' AND last_name = 'Кузнецова'**

    Да, индекс будет использован, потому что оба поля из индекса участвуют в фильтрации, и порядок соответствует порядку в индексе (last_name, затем first_name).


Ответ:

Правильные варианты:

  • SELECT * FROM person WHERE last_name = 'Кузнецова'
  • SELECT * FROM person WHERE first_name = 'Алиса' AND last_name = 'Кузнецова'

Если будут вопросы по работе индексов — с радостью объясню подробнее!

Не нашли нужного вам решения? Оставьте заявку и наши авторы быстро и качественно помогут вам с решением.
Оставить заявку
Работа вам нужна срочно. Не волнуйтесь, уложимся!
  • 22423 авторов готовы помочь тебе.
  • 2402 онлайн