Очки знаний индекса Mysql

задняя часть база данных MySQL SQL

Обзор


Я написал один раньшеОбучение дереву 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 будет оптимизирован, вы можете использовать индекс, вы можете использовать его с уверенностью.


Оригинальная ссылка


Очки знаний индекса Mysql