|
|
|
| Насколько я знаю, почти все индексы в MySQL реализованы в виде B-деревьев. Хотелось бы узнать как строится это B-дерево в контексте индексов MySQL (и особенно составных), чтобы лучше понимать логику поиска по индексу.
Не могу найти подходящую литературу по этому вопросу. Может кто поделится ссылкой? | |
|
|
|
|
|
|
|
для: Igorek
(19.11.2012 в 13:34)
| | Хм... можно от сюда начать http://ru.wikipedia.org/wiki/B-%D0%B4%D0%B5%D1%80%D0%B5%D0%B2%D0%BE | |
|
|
|
|
|
|
|
для: cheops
(19.11.2012 в 21:45)
| | эхх... пытаюсь разобраться, возникли следующие вопросы:
1. Видов B-деревьев несколько - какой использует MySQL? Каков порядок этого дерева? Как он выбирается?
2. Если для простого индекса (не составного) я могу представить как он выглядит, согласно правилам построения B-дерева, а вот для составного индекс вообще беда - как эта магия работает?!
3. Я правильно понимаю, что сам индекс при работе мускла закеширован в оперативную память и, если мы делаем выборку по полю, для которого создан индекс, то сначала в индексе находятся ID-шники удовлетворяющие поиску, а потом уже идет обращение к файлу данных для выборки собственно данных по найденным ID-шникам?
4. Вопрос видимо связан со вторым - почему для составного ключа поиск возможен только по левому префиксу? т.е. если есть индекс (key1, key2, key3), то индекс будет использован для поисков вида key1=33 AND key3=23, но не для key2 = 3 AND key3=23. | |
|
|
|