2014-02-12 3 views
0

У меня есть таблица, которая содержит более 1 миллиона записей. В таблице нет ключей. Однако у нас есть определенный кластеризованный и некластеризованный индекс.Первичные ключи и индексы - производительность запросов

Я хочу знать, будет ли на самом деле улучшение производительности при выполнении запроса SELECT и включать столбцы, в которых у нас есть индекс, созданный в статье WHERE?

Имеет ли первичный/уникальный ключ обязательство использовать истинные преимущества индексов?

детали Таблица:

  • 260 колонн
  • Нет Ключи
  • Нет столбца идентификации определяется.
  • Определить колонку с номером строки.
  • 1 кластерный индекс и 1 не кластерный индекс

Запрос:

select * 
from employee(nolock) 
where employeeID = '15' and employeeType = 'FT' 
+1

Укажите расположение таблицы и пример запросов, которые вы пытаетесь запустить. –

+0

260 столбцов Нет ключей Не определен идентификационный столбец. Определенная колонка rowguidcol. 1 кластеризованный индекс и 1 некластеризованный индекс выберите * у сотрудника (nolock) где employeeID = '15' и employeeType = 'FT' – Sammy

+1

Каковы столбцы и типы данных, используемые в кластерном/некластеризованном индексе? – deeg

ответ

0

Лично на основе моего опыта кластерного индекса лучше всего, когда это узкая, уникальная и не меняется. Чем меньше кластеризованный ключ (неодинаковые кластерные индексы добавляют 4-байтовый «uniquifier»), тем лучше, потому что он создает более плотную страницу листа для последующих некластеризованных индексов.

Предполагая, что у вас в настоящее время есть уникальный код с кластеризацией для целого числа (при условии, что employeeID является целым числом), размер каждой клавиши эффективно удваивается, чтобы сделать это с помощью uniquifier (4 из целого числа и 4 из uniquifier).

Разница между уникальным/уникальным кластеризованным индексом будет состоять из некластеризованных строк листьев, соответственно 1000 и 2000 строк на страницу. Более плотная некластеризованная листовая страница означает более быстрое перемещение индексов и сохранение на дисковое пространство (1000000 строк в 4 байта, сохраненных в строке, составляют примерно 3 гига за некластеризованный индекс).

Многое из этого основано на предположениях на вашем столе.

TLDR: Узкий кластерный ключевой ключ лучше всего; сделайте его первичным ключом, чтобы обеспечить уникальность и предотвратить расточительный 4-байтовый уникальный идентификатор.

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