Я выполнил обновление заявление по следующим направлениям вчера:Улучшается ли производительность при размещении некластеризованного индекса в поле, которое уже имеет кластеризованный индекс?
UPDATE MainTable
Set SomeField = SubsetTable.SomeField
where MainTable.MainTableKey = SubsetTable.MainTableKey
где SubsetTable
является подмножеством MainTable
и имеет такое же поле первичного ключа. MainTable
имеет примерно 200 м записей, SubsetTable
имеет 5 м записей. MainTableKey
- это GUID.
Обе эти таблицы имеют кластерный индекс на MainTableKey
.
Когда я выполнил этот запрос, первый раз потребовалось 14 часов.
Затем я добавил некластеризованный индекс в MainTableKey
на обе таблицы. Теперь это занимает 30 минут.
Есть ли у кого-нибудь идеи о том, почему прирост производительности будет настолько драматичным?
Сравните планы выполнения! –
Какую базу данных вы используете? Вопросы о производительности сильно зависят от базы данных. –
SQL Server 2008 R2. Извините, просто обновил теги – Karl