2010-11-22 2 views
0

Я очень новичок в SQL Server 2005, и я учу его от онлайн учебник, вот некоторые из моего вопроса:Sql Server 2005 начинающий запрос

1: Какова разница между Select * от XYZ и выберите все * от XYZ.

2: Цель кластерного индекса - облегчить поиск, физически сортируя таблицу [насколько я знаю :-)]. Скажем, если есть основной столбец на таблице, чем это удобно для создания кластерного индекса в таблице? потому что у нас уже есть столбец, который сортируется.

3: Почему мы можем создать 1 кластерный указатель + 249 некластеризованный индекс = 250 индекс на столе? Я понимаю требование 1 кластеризованного индекса. Но почему 249 ?? Почему не более 249?

ответ

0
  1. Нет разницы SELECT ALL по умолчанию, в отличие от SELECT DISTINCT

  2. мнение меняется. По соображениям производительности кластеризованные индексы в идеале должны быть небольшими, стабильными, уникальными и монотонно увеличиваться. Первичные ключи также должны быть стабильными и уникальными, поэтому там есть очевидная припадка. Однако кластеризованные индексы хорошо подходят для запросов диапазона. Поиск отдельных записей с помощью ПК может хорошо работать, если ПК некластеризован, поэтому некоторые авторы предлагают не «тратить» кластерный индекс на ПК.

  3. В SQL Server 2008 вы можете создать до 999 NCI на столе. Я не могу себе представить, что когда-либо делаю это, но я думаю, что лимит был поднят как потенциально с «отфильтрованными индексами», для этого может оказаться жизнеспособным. Индексы добавляют затраты на операции по модификации данных, хотя, поскольку изменения необходимо размножать в нескольких местах, я бы предположил, что это будет только база данных (только для отчетов), которая когда-либо достигла даже двойных показателей некластеризованных нефильтрованных индексов.

+0

Спасибо за ваше предложение, я понимаю, что с пунктами 1 и 2. Но я немного путаюсь с точкой 3. Почему у нас в таблице 999 нет кластеризованных индексов, почему не 900 или 1000? – Zerotoinfinity

+0

@ Zerotoinfinite - Единственные люди, которые могут ответить, это разработчики SQL Server! Я предполагаю, что внутренне они выделяют конечное пространство для хранения этих метаданных, а 999 - разумный лимит. –

0

Для 3:

Everytime при вставке/удалить запись в таблице все индексы должны быть обновлены. Если у вас слишком много индексов, это займет слишком много времени.

Если ваш стол имеет более 5-6 индексов, я думаю, вам нужно потратить время и проверить себя.

+0

Спасибо за ваш вклад. Но я смущен между этим числом. Почему только 249? Почему бы не 248 или 251? – Zerotoinfinity

+0

Я считаю, что все индексы должны обновляться, только если таблица имеет кластеризованный индекс –

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