SQL — 1 индекс на 2 столбца или несколько индексов

Рассмотрим таблицу sql Работодатель.

Столбец A -- (int) Уникальный столбец идентификации. Не используется в запросах на выборку как часть предложения where.

Столбец B -- (int) Неуникальный столбец. Очень часто используется в запросах на выборку как часть предложения where.

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

1) 1 кластеризованный уникальный первичный ключ в столбце A и 1 некластеризованный индекс в столбце B

OR

2) 1 сгруппированный уникальный первичный ключ в столбцах B, A (составной первичный ключ)

OR

3) 1 некластеризованный, уникальный, первичный ключ в столбце A и 1 кластеризованный индекс в столбце B.

Любые другие предложения также приветствуются. заранее спасибо


person Pradeep Mirchandani    schedule 16.06.2017    source источник
comment
Будет ли использоваться столбец A в предложении Where. Если да, то второй индекс не будет полезен. Порядок важен в индексе с более чем одним столбцом.   -  person Pரதீப்    schedule 16.06.2017
comment
Какие РДБМ? Я думаю, что некоторые детали будут зависеть от производителя.   -  person    schedule 16.06.2017
comment
Столбец A не будет использоваться как часть предложения where   -  person Pradeep Mirchandani    schedule 16.06.2017
comment
Это для SQL Server   -  person Pradeep Mirchandani    schedule 16.06.2017


Ответы (2)


Выберите вариант 1.
При создании первичного ключа всегда стремитесь к максимально короткому столбцу. Причина в том, что этот столбец будет использоваться во всех других индексах. Также я надеюсь, что когда вы говорите об идентичности, вы не имеете в виду случайно сгенерированное значение, потому что это повредит вашей производительности при написании.

person Marek Vitek    schedule 16.06.2017
comment
Спасибо. Да, он последовательно увеличивается. А как насчет варианта 3? (отредактировано некоторое время назад). - person Pradeep Mirchandani; 16.06.2017
comment
Обычно кластеризованный индекс делается по столбцу ID. И в идеале на колонке, которая уникальна. Когда вы будете создавать другую таблицу, скажем, сотрудников, вы, скорее всего, будете ссылаться на столбец идентификаторов в таблице работодателей. А поскольку у вас есть кластеризованный индекс, вы можете быстро получить доступ ко всем данным работодателя для определенного сотрудника. Помните, что кластерный индекс означает, что данные физически сортируются в соответствии с этим столбцом. - person Marek Vitek; 16.06.2017

Выберите первый, второй заполнит большое пространство, потому что он сгруппирован и его трудно сопровождать, потому что он составной. Чтобы выбрать первый, у вас будет небольшой индекс и его легко сопровождать

person Vecchiasignora    schedule 16.06.2017