У меня есть некоторые вопросы на Составных Первичных ключах и кардинальности столбцов. Я искал сеть, но не нашел категорического ответа, таким образом, я попробовал еще раз. Вопросы:
Контекст: Большой (50M - 500M строки) таблицы OLAP Prep, не NOSQL, не Колоночный. MySQL и DB2
1) Порядок ключей в вопросе PK?
2) Если кардинальность столбцов варьируется в большой степени, который должен использоваться сначала. Например, если у меня есть КЛИЕНТ/КАМПАНИЯ/ПРОГРАММА, где КЛИЕНТ очень кардинален, КАМПАНИЯ умеренна, ПРОГРАММА почти похожа на растровый индекс, какой порядок является лучшим?
3) Какой порядок является лучшим для Соединения, если существует оператор Where и когда нет никакого оператора Where (для представлений)
Заранее спасибо.
1) Имеет ли значение порядок ключей в PK?
Да, он изменяет порядок записи для индекса, который используется для полиции PRIMARY KEY
.
2) Если кардинальность столбцов сильно различается, какой из них следует использовать первым. Например, если у меня есть CLIENT/CAMPAIGN/PROGRAM, где CLIENT имеет высокую кардинальность, CAMPAIGN - умеренную, PROGRAM - почти как растровый индекс, какой порядок будет лучшим?
Для запросов select это полностью зависит от запросов, которые вы собираетесь использовать. Если вы ищете все три столбца сразу, порядок не важен; если вы ищете два или один столбец, они должны быть ведущими в индексе.
При вставке лучше, чтобы ведущий столбец соответствовал порядку, в котором вставляются записи.
3) Какой порядок лучше всего подходит для Join, если есть пункт Where и когда пункта Where нет (для представлений)
Опять же, это зависит от пункта WHERE
.