Нужен ли мне один индекс поля, если я создаю два индекса поля в mysql

#mysql #indexing

#mysql #индексирование

Вопрос:

У меня есть таблица ‘orders’ с полями

  • ID
  • user_id
  • project_id
  • и т.д..

где выбираются два типа

  1. выберите * формировать заказы, где user_id = val1

и

  1. выберите * формировать заказы, где user_id = val1 и project_id = val2

Если я создаю индекс с несколькими столбцами для второго типа выборок по user_id project_id, нужно ли мне создавать индекс одного столбца по user_id для резервного копирования первого типа выборок?

Ответ №1:

Вам нужен только один индекс для таблицы . . . orders(user_id, project_id) . Это можно использовать для обоих запросов, потому что самые левые ключи ( user_id ) имеют условие равенства в первом запросе. Однако ключи должны располагаться в таком порядке.

MySQL имеет довольно хорошую документацию по многоколоночным индексам.