2016-10-26 5 views
1

Я создаю базу данных для компиляции данных с 40 разных серверов. Эти серверы имеют один и тот же дизайн, но используют платформу, предназначенную для одного места (поэтому идентификационных идентификаторов для каждого местоположения не существует). Я создал ключи для каждого места для данных, компилируется, но из-за этого почти все мои таблицы имеют составные первичные ключи конструкций, таких как:Включая столбец из кластерного индекса в некластерный?

LocationID, TransactionID, CustomerID, ServiceID, TransDate, Amount 

и

LocationID, CustomerID, FirstName, LastName, Balance 

для колонн.

Мой вопрос касательно моих некластеризованных индексов. Лучше ли включать столбец LocationID, если я планировал, например, создать индекс на CustomerID в моей таблице Transaction, хотя LocationID уже находится в ключе кластеризации таблицы?

Надеюсь, что это имело смысл, спасибо заранее!

+2

Если кластерный ключ в таблице включает LocationID, он будет включен во все некластеризованные индексы по умолчанию. – dfundako

+0

Некоторые полезные чтения [здесь] (http://sqlblog.com/blogs/kalen_delaney/archive/2010/03/07/more-about-nonclustered-index-keys.aspx). – HABO

ответ

0

Clustering действительно о том, как вы собираетесь получать данные, когда все сказано и сделано. Если вы собираетесь получать данные на основе CustomerID и LocationID, тогда обязательно укажите их в некотором индексе. Проблема состоит в том, что вам нужно: 1) загрузить ваши данные, что может привести к повторной балансировке вашего кластерного индекса (т. Е. Если вы загрузили LocationID 2 до загрузки в LocationID 1), а затем 2) определите свои запросы, чтобы включить это во все.

У меня возникло ощущение, что было бы чище повторять все, сохраняя те же структуры данных, которые у вас уже есть, вместо того, чтобы пытаться включить LocationID в каждую таблицу и в каждое соединение запроса. Является ли это проще или нет ... ну, я думаю, проще будет просто перекрыть данные в пути, а не изменить всю схему. Возможно, кажется простым просто добавить LocationID, но я подозреваю, что он вас укусит, особенно на внешние запросы на присоединение & вещи, которые немного более тонкие, чем простые equijoins.

Смежные вопросы