Как получить значение индекса для конкретной таблицы из MySQL? - PullRequest
0 голосов
/ 20 ноября 2018

Как получить значение mysql index для конкретной таблицы из MySQL?

"Большинство индексов MySQL (PRIMARY KEY, UNIQUE, INDEX и FULLTEXT) хранятся в B-деревьях."

Как вы можете проверить в документации, этоB-деревья?

1 Ответ

0 голосов
/ 21 ноября 2018

Изучение BTrees.В частности, деревья B +.

Давайте найдем один элемент по индексу BTree.BTree имеет корневой узел;начать там.Он может содержать около 100 ссылок на подузлы и информацию о диапазоне значений в каждом.Заходите в соответствующий подузел.Для маленького стола, вы закончили.Но для огромного стола вы повторяете процесс несколько раз.(Возможно, 6 итераций для таблицы с триллионами строками.) Готово.Вы нашли одну строку, которую хотели.

Теперь давайте выберем «диапазон» строк.(Пример: WHERE id BETWEEN 1234 and 9876 или WHERE name LIKE 'T%' Выполните вышеописанное, чтобы найти первый из диапазона, затем перейдите к «следующей» записи в нижнем («листовом») узле, в котором вы находитесь. Это нормально, пока вы не исчерпаетезаписей в конечном узле.

Как включается + in B+Tree. Это означает, что есть ссылка от этого узла к «следующему» узлу на нижнем уровне. Так что это довольно быстропродолжить запрос диапазона.

Статистика для таблицы с миллионами строк с разветвлением 100:

Чтобы найти конкретный элемент: 3 узла (блоки по 16 КБ в случаеНужно дотронуться до InnoDB).

Чтобы получить 500 последовательных строк: 3 узла, чтобы добраться до начала, а затем еще около 5 для сканирования вперед.

Сравнить ... Если не было индексавам нужно будет сканировать всю таблицу, содержащую около 10 000 блоков (1M / 100). Это потребуется для любого из приведенных выше гипотетических запросов.

В InnoDB (в MySQL) почти все ключи, которые выкогда-либо сделайте, будет ПЕРВИЧНЫЙ КЛЮЧ, УНИКАЛЬНЫЙ, и ИНДЕКС. Это - деревья B +;(в отличие от других поставщиков).Кроме этого, есть ПРОСТРАНСТВО в FULLTEXT;они более сложные.

Если вы сделаете SHOW CREATE TABLE foo, вы получите некоторую информацию об индексах.`information_schema имеет дополнительную информацию.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...