Являются ли запросы в полях с индексированными растровыми изображениями с низкими значениями быстрее по сравнению с индексами b-дерева?
Распространенная идея о том, что индексы растровых изображений обеспечивают лучшую производительность запросов для полей с низкими различимыми значениями по сравнению с индексами b-дерева. Но так ли это?
Например,
SELECT * FROM some_table WHERE color = 'RED'
.
Здесь поле color
имеет низкие отдельные значения и может быть проиндексировано с помощью b-дерева или растрового индекса:
- если
color
использует индекс b-tree , то для выполнения вышеуказанного запроса база данных должна выполнить бинарный поиск + обход в порядке (из бинарного результата поиска в обоих направлениях), который дает us O (log N + K) ~ O (log N) временная сложность, где K - количество строк результата. K <= N. </li>
- если
color
использует индекс bitmap , тогда база данных выполняет полное сканирование, что дает O (N) сложность времени.
Так что, с моей точки зрения, индекс растровых изображений еще хуже.
Я прав?