Имеет ли смысл ставить индекс на крошечные таблицы - PullRequest
2 голосов
/ 11 июня 2009

У меня есть несколько таблиц с 4 до 10 строк. Мы не ожидаем, что эти таблицы будут когда-либо расти намного больше, чем на несколько строк.

Имеет ли смысл ставить указатель на их первичные ключи.

Ответы [ 6 ]

11 голосов
/ 11 июня 2009

Если они имеют первичные ключи, как вы указали, то у вас уже есть хотя бы один индекс. Это, вероятно, кластеризованный индекс, и я думаю, что вы хорошо подошли.

6 голосов
/ 11 июня 2009

Правильный ответ: ЭТО НЕ имеет значения .

В любое время, когда таблица достаточно мала для размещения на одной странице данных 8 КБ, SQL-сервер может просто загрузить эту одну страницу и получить «всю таблицу», доступную для выполнения всего, что ей нужно.

A кластеризованный индекс - это сама таблица, поэтому, если вы добавляете кластеризованный индекс, вы не добавляете никаких накладных расходов, вы просто указываете предпочтение сортировки в пределах отдельная страница данных, где находится таблица.

Некластеризованный индекс, с другой стороны, представляет собой отдельный объект, поэтому он будет просто бесполезным пространством, поскольку он никогда не будет использоваться. (Оптимизатор запросов никогда не собирается загружать индекс, имеющий только указатели на одну страницу данных. Он просто загружает только одну страницу данных напрямую).

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

2 голосов
/ 11 июня 2009

У вас почти всегда должен быть кластеризованный индекс. Я бы сказал, да, иди и индексировать их.

Это, безусловно, не повредит, и если данные в этой таблице превзойдут ваши ожидания, у вас будет, по крайней мере, простая стратегия индексации, которая поможет смягчить эффект от увеличения размера таблицы.

1 голос
/ 11 июня 2009

Надеюсь, у вас есть первичный ключ, который является вашим кластеризованным индексом. Но, кроме столбцов в вашем индексе, таблица строк из 4-10 крошечных - затраты на поиск индекса связаны с большими затратами, чем фактическое сканирование таблицы.

Кто-то, пожалуйста, оставьте меня честным здесь - для SQL 2008 в средах крупномасштабного производства и отчетности мы не беспокоимся о индексах в таблицах со строками менее 50 тыс.

1 голос
/ 11 июня 2009

Если вы используете Первичный ключ , то у вас уже будет один кластерный индекс.

0 голосов
/ 11 июня 2009

Я с Тапори об этом; добавление индексов излишне увеличивает накладные расходы.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...