Обзор
Я написал один раньшеОбучение дереву Mysql B+, кратко представляет число B+ и причину, по которой MySql использует дерево B+,
Обладая этими базовыми знаниями, легче понять типы индексов MySql и некоторые методы использования индексов.
индекс покрытия
Создается вспомогательный индекс, если данные можно получить непосредственно из файла вспомогательного индекса, не обращаясь к файлу кластеризованного индекса (самоинкрементный индекс первичного ключа), то при этом используется индексное покрытие.
Эффективность этого чрезвычайно высока.
select a from table xxx where b = 2
Как и в приведенном выше утверждении, если вы создаете индекс только для столбца b, этот индекс можно использовать для выполнения этого SQL, но, поскольку данных столбца a нет в этом индексе b, индексу необходимо снова получить доступ к файлу кластеризованного индекса.
Если установлен совместный индекс, такой как (b, a), файл совместного индекса будет содержать значения столбца a и столбца b, так что приведенный выше оператор может использоваться для охвата индекса.
совместный указатель
Объединенный индекс — это многостолбцовый индекс, созданный для повышения производительности запросов.
CREATE TABLE `xxxx` (
`id` int(10) NOT NULL AUTO_INCREMENT COMMENT '自增',
`code` int(10),
`age` int(10),
PRIMARY KEY (`id`),
KEY `code` (`code`)
) ENGINE=InnoDB
Некоторым учащимся покажется, что достаточно напрямую использовать одноколоночный индекс, зачем вам использовать совместный индекс. На самом деле, из примеров, которые я привел выше, можно обнаружить, что если вы используете только одностолбцовый индекс, хотя индекс также используется, он часто возвращается к кластерному индексу, и все равно происходит потеря производительности, особенно при сортировке и других операциях добавляются медленные. Вот еще один пример, поисковый запрос
select id,code from xxxx order by age limit 50000,10;
Если индекс строится только по столбцу age, то эффективность этого SQL-запроса невысокая, но какой совместный индекс установлен (возраст, код), операцию можно завершить, не возвращаясь к кластеризованному индексу.
Не индексировать столбцы простых значений перечисления
Значения определенного столбца только 0 и 1. Для такого рода столбцов не нужно строить вспомогательный индекс, потому что нет дискриминации.
Столбцы индекса не участвуют в вычислениях
Номер B+ хранит ключ и данные. Если вы хотите выполнить запрос, вам нужно сначала вычислить данные в дереве, а затем сравнить их. Стоимость слишком высока, и это очень медленно. Поэтому столбец индекса использует функцию, и индекс вообще нельзя использовать. , MySql не поддерживает это.
Расширьте индекс, если можете, постарайтесь не создавать новый
Выше были упомянуты преимущества объединенного индекса: если в базе данных есть индекс a, а теперь столбцу b тоже нужен индекс, то можно напрямую создать (a, b). Поскольку такие запросы, как b=11 или b в (11,22),
MySql будет оптимизирован, вы можете использовать индекс, вы можете использовать его с уверенностью.
Оригинальная ссылка