Какой вариант индекса я должен выбрать? - PullRequest
1 голос
/ 04 октября 2011

У меня есть таблица SQL с этими столбцами (id, A, B, C, D, E).

Я обычно запрашиваю (A и C) и (B и C), поэтому я решаюесть индекс для этих 3. Есть несколько вариантов для этого:

  • Индекс для A, B, C отдельно
  • Индекс для двух пар (A, C) и (B, C)
  • Индекс для (A, B, C)

Какой вариант выбрать?Размер базы данных может быть проблемой, но давайте предположим, что это не имеет большого значения прямо сейчас.

Ответы [ 2 ]

2 голосов
/ 05 октября 2011

Постройте индекс по двум парам. В большинстве индексов (хотя это может варьироваться в зависимости от типа и базы данных), индекс для A, B также используется, если вы запрашиваете только A, но A, B не используется, если вы запрашиваете только B. Поэтому убедитесь, что первые столбцы в ваши индексы - это столбцы, по которым вы запрашиваете. Если вы запрашиваете A, B и A, C, но не только B или C, вам нужны только индексы для этих двух пар.

1 голос
/ 05 октября 2011

если важно использование хранилища / пространства, то добавьте два отдельных индекса столбцов, каждый на A и B.

, если производительность этих запросов более критична, то добавьте два составных индекса, один на (A,C) и другие на (B, C).

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

...