У меня есть таблица с многоколоночным индексом, и я сомневаюсь в правильной сортировке индексов, чтобы получить максимальную производительность по запросам.
Сценарий:
PostgreSQL 8.4, таблица с около миллиона строк
Значения в столбце c1 могут иметь около 100 различных значений . Мы можем предположить, что значения распределены равномерно, поэтому у нас есть около 10000 строк для каждого возможного значения.
Столбец с2 может иметь 1000 различных значений . У нас есть 1000 строк для каждого возможного значения.
При поиске данных условие всегда включает значения для этих двух столбцов, поэтому таблица имеет многоколонный индекс, объединяющий c1 и c2. Я читал о важности правильного упорядочения столбцов в многоколоночном индексе, если у вас есть запросы, использующие только один столбец для фильтрации. Это не так в нашем сценарии.
У меня такой вопрос:
Учитывая тот факт, что один из фильтров выбирает гораздо меньший набор данных, могу ли я улучшить производительность, если первый индекс является наиболее селективным (тот, который позволяет меньший набор)? Я никогда не рассматривал этот вопрос, пока не увидел графику из ссылочной статьи:
Изображение взято из ссылочной статьи о многоколоночных индексах .
В запросах для фильтрации используются значения из двух столбцов. У меня нет запросов, использующих только один столбец для фильтрации. Все они являются WHERE c1=@ParameterA AND c2=@ParameterB
. Есть также такие условия:WHERE c1 = "abc" AND c2 LIKE "ab%"