В случае MySQL можно использовать индексы с несколькими столбцами для запросов, которые проверяют все столбцы в индексе, или запросы, которые проверяют только первый столбец, первые два столбца, первые три столбца и так далее.
Если вы укажете столбцы в правильном порядке в определении индекса, один составной индекс может ускорить выполнение нескольких типов запросов к одной и той же таблице.
Допустим, у вас есть INDEX nameIdx (last_name,first_name)
, созданный на тестовой таблице.
Поэтому индекс nameIdx используется для поиска в следующих запросах:
SELECT * FROM test WHERE last_name='Widenius';
SELECT * FROM test
WHERE last_name='Widenius' AND first_name='Michael';
SELECT * FROM test
WHERE last_name='Widenius'
AND (first_name='Michael' OR first_name='Monty');
где имя nameIdx не используется для поиска в следующих запросах:
SELECT * FROM test WHERE first_name='Michael';
SELECT * FROM test
WHERE last_name='Widenius' OR first_name='Michael';
для более подробной информации см. URL
резюме этого: если вы используете столбцы в предложении where, как указано в порядке индекса (слева направо), то это лучше, чем индекс с одним столбцом
person
Shirishkumar Bari
schedule
16.04.2014