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