Я использую SQL Server 2012 &, создавая таблицу с 8 столбцами, которые показаны ниже. Я пытаюсь оценить, какие столбцы я должен использовать в качестве индексов, и должны ли они быть кластерными или некластеризованными индексами.Выбор столбцов для индексирования и их кластеризация или не кластеризация
Один раз в день (обычно) будет загружена около 10 000 строк данных. Идя вперед, это может быть 100 000.
type column name
------------- ------------
datetime UploadDate
varchar(12) SecID
varchar(6) FundCode
varchar(100) Name
float Price
float Nominal
int SourceCode
datetime PriceDate
Пример некоторых строки
UploadDate SecID FundCode Name Price Nominal SourceCode PriceDate
2015-08-20 A045 ABCVPL Joe 1.3434 1000.33 3
2015-08-20 A563 ABCVPL Bob 1.5961 10.33 3
2015-08-20 A045 DEFGHJ Joe 1.3434 856.41 3
2015-08-20 XC45 PLMNOI Pip 2.3654 25.52 3
2015-08-20 KMM5 ABCVPL Nit 6.9565 1532 3
2015-08-21 A045 ABCVPL Joe 4.3434 1112 3
2015-08-21 GH45 DEFGHJ Joe 3.3434 16532 3
2015-08-21 PL34 DEFGHJ Joe 7.3434 635 3
2015-08-21 ER33 ABCVPL Joe 8.3434 6320 3
Ночной процесс будет вставлять новые строки в базу данных, так что время, потраченное здесь не является проблема.
Это будет только запрос, который будет выполняться на столе &. Первичного ключа не будет.
Если мы возьмем 1 день в качестве примера данных. Допустим, что сегодня загружено 10 000 строк. Столбец UploadDate будет 21 августа 2015 года для всех 10 000 строк. Столбец FundCode может принимать 20 различных значений. Все остальные столбцы (кроме SourceCode - хотя и не думают, что это будет вызвано много) будут иметь разные значения и в значительной степени принимают бесконечные значения.
Итак, я считаю, что FundCode & UploadDate будет состоять из двух столбцов, которые могли бы быть кандидатами на индексацию, что кажется правильным? Если это так, они должны быть кластеризованными или некластеризованными и почему?
Update
Просто добавить, что, используя первые три столбца в качестве индекса может создать уникальную строку - не уверен, если это помогает или что-нибудь
Kimberly Tripp [показать совершенно ясно, что такое ** липкая d ** кластерный ключ] (http://www.sqlskills.com/blogs/kimberly/guids-as-primary-keys-andor-the-clustering-key/) - следуйте ее совету! Она - Королева Индексации *! –
Уже есть статьи с общим советом о том, как индексировать в Интернете и давать конкретные рекомендации, нам нужно будет знать, какие запросы будут запущены, и как их следует взвешивать. –
Также: * не будет первичного ключа * - это ужасно плохая идея ** - каждая таблица ** должна иметь ** правильный первичный ключ, позволяющий четко и надежно идентифицировать каждую строку самостоятельно.Как правило, этот первичный ключ также является ** кластерным индексом ** в SQL Server –