Index - перст указующий 
и не только
Зачем 
Информации 
очень 
очень 
очень 
много. 
А времени - мало.
Зачем 
Просто, когда ничего не нужно искать.
Индексы в БД 
Вначале был 
последовательный 
доступ.
Индексы в БД 
Затем появились 
упорядоченные 
списки
Индексы в БД 
Которые 
превратились 
наивные индексы
Индексы в БД 
Pro: 
● быстрый доступ к данным
Индексы в БД 
Pro: 
● быстрый доступ к данным 
Contra: 
● затраты на поддержание
Борьба за I/O 
Партицирование индексов 
Компрессия 
Игнорирование null-значений 
Индексы на фрактальных деревьях
Какие бывают индексы 
● составные 
● уникальные
Особенности использования 
Индекс необходим если: 
● по атрибутам идет соединение
Особенности использования 
Индекс необходим если: 
● по атрибутам идет соединение 
● атрибуты являются PK или UK
Особенности использования 
Индекс необходим если: 
● по атрибутам идет соединение 
● атрибуты являются PK или UK 
● атрибуты ограничены внешним ключом
Особенности использования 
Индекс противопоказан если: 
● критична скорость вставки
Особенности использования 
Индекс противопоказан если: 
● критична скорость вставки 
● данные выбираются только целиком
Особенности использования 
Индекс не будет использован если: 
● атрибут сравнивается с null
Особенности использования 
Индекс не будет использован если: 
● атрибут сравнивается с null 
● not in, not like, not exists
Особенности использования 
Индекс не будет использован если: 
● атрибут сравнивается с null 
● not in, not like, not exists 
● не префиксный поиск
Способы использования 
● покрывающие индексы
Способы использования 
● покрывающие индексы 
● функциональные индексы
Способы использования 
● покрывающие индексы 
● функциональные индексы 
● таблицы организованные по индексу
Способы использования 
● покрывающие индексы 
● функциональные индексы 
● таблицы организованные по индексу 
● кластера таблиц и индексов
Специализация индексов 
Каждому классу данных - свой тип индекса
Специализация индексов 
Неспецифические данные
Специализация индексов 
Неспецифические данные 
● B-tree
Специализация индексов 
Неспецифические данные 
● B-tree 
● hash
Специализация индексов 
Неспецифические данные 
● B-tree 
● hash 
● bitmap
Специализация индексов 
Геоданные
Специализация индексов 
Геоданные 
● R-tree
Специализация индексов 
Геоданные 
● R-tree 
● z-order
Специализация индексов 
Геоданные 
● R-tree 
● z-order 
● QuadTree
Специализация индексов 
Тексты
Специализация индексов 
Тексты 
● inverted index
Специализация индексов 
Тексты 
● inverted index 
● N-gramm
Специализация индексов 
Тексты 
● inverted index 
● N-gramm 
● Bloom-filter
Специализация индексов 
Вложенные множества
Специализация индексов 
Вложенные множества 
● VODKA
The End 
Спасибо за внимание. 
Вопросы?

Index - перст указующий, и не только

Editor's Notes

  • #4 Что бы почитать? Читай псалмы сын мой.
  • #10 Главный ресурс: время. Тонкое место любой БД - работа с дисками, поскольку рост скорости передачи значительно отстает от роста производительности процессоров и объемов поддерживаемой оперативной памяти..
  • #12 Главный ресурс: время. Тонкое место любой БД - работа с дисками, поскольку рост скорости передачи значительно отстает от роста производительности процессоров и объемов поддерживаемой оперативной памяти..
  • #13 Главный ресурс: время. Тонкое место любой БД - работа с дисками, поскольку рост скорости передачи значительно отстает от роста производительности процессоров и объемов поддерживаемой оперативной памяти..
  • #14 Главный ресурс: время. Тонкое место любой БД - работа с дисками, поскольку рост скорости передачи значительно отстает от роста производительности процессоров и объемов поддерживаемой оперативной памяти..
  • #15 Главный ресурс: время. Тонкое место любой БД - работа с дисками, поскольку рост скорости передачи значительно отстает от роста производительности процессоров и объемов поддерживаемой оперативной памяти..
  • #16 Главный ресурс: время. Тонкое место любой БД - работа с дисками, поскольку рост скорости передачи значительно отстает от роста производительности процессоров и объемов поддерживаемой оперативной памяти..
  • #17 Главный ресурс: время. Тонкое место любой БД - работа с дисками, поскольку рост скорости передачи значительно отстает от роста производительности процессоров и объемов поддерживаемой оперативной памяти..
  • #18 Главный ресурс: время. Тонкое место любой БД - работа с дисками, поскольку рост скорости передачи значительно отстает от роста производительности процессоров и объемов поддерживаемой оперативной памяти..
  • #19 Главный ресурс: время. Тонкое место любой БД - работа с дисками, поскольку рост скорости передачи значительно отстает от роста производительности процессоров и объемов поддерживаемой оперативной памяти..
  • #20 Экономим время, не читая с диска блоки таблицы.
  • #21 Можем использовать индекс благодаря предварительно проведенному преобразованию.
  • #22 Экономим время, благодаря тому, что часть блоков уже вычитана
  • #25 Общее для всех индексов: так или иначе - это деревья.