Наилучшие комбинации индексов, учитывая NDV (количество различных значений) - PullRequest
0 голосов
/ 26 июня 2019

У меня есть таблица Oracle READ-ONLY с 2 миллионами строк.

NDV (количество различных значений для каждого столбца следующее)

C1 : 2
C2 : 40000
C3 : 40
C4 : 10000
C5 : 10000
C6 : 2

Предположим, что запрос выполняетвыполнить поиск по всем вышеперечисленным столбцам.

Какие комбинации составных индексов будут наилучшими из приведенных выше?

Также - игнорируйте тот факт, что DML будет замедляться из-за большего количества индексов, поскольку база данныхвсегда в режиме READ_ONLY.

Ответы [ 2 ]

0 голосов
/ 26 июня 2019

Еще некоторая информация, о которой я узнал, - и она должна была быть включена в описание проблемы.

Оказывается, что база данных является базой данных ТОЛЬКО ДЛЯ ЧТЕНИЯ.Поэтому, когда у нас есть таблица с несколькими столбцами с очень низкой кардинальностью, это делает ее очень хорошим кандидатом для индекса BIT-MAPPED.

Я создал битовый индекс для столбцов C1, C3, C6, и он действительноповышенная производительность.

0 голосов
/ 26 июня 2019

Я считаю, что лучший способ упорядочить столбцы многостолбцового индекса - это посмотреть на все запросы к определенной таблице и разместить эти столбцы, на которые чаще всего ссылаются в предложениях WHERE, в начале списка столбцов.- Сжатие индекса - это еще одно соображение: размещение C1, C6 и C3 впереди может обеспечить меньший индекс.- Но в противном случае да, я бы, вероятно, поставил С2, С4 и С5 вперед, если бы другие соображения не вступили в игру.

...