Если у вас вообще нет кластерных индексов, то, что у вас есть, называется «кучей». У вас также есть куча проблем, поскольку порядок данных в вашей таблице случайный - и выбор данных из таблицы будет медленным . Это может быть хорошо, если вы делаете намного больше INSERT
с, чем SELECT
с, но обычно это не так.
Будет ли кластеризованный индекс замедлять INSERT
с или нет, зависит от:
Коэффициент заполнения таблицы (т. Е. Достаточно ли пропусков в данных, чтобы можно было вставлять новые данные, не перемещая все вокруг).
Какие столбцы выбраны в качестве ключа кластера.
Если вы используете столбец идентификаторов в качестве ключа кластера, то вы можете обнаружить, что производительность вставки совершенно нормальная, поскольку новые записи всегда добавляются в конце. То же самое может применяться к столбцу datetime, если используется текущая дата (которая, конечно, также продолжает увеличиваться).
Вам необходимо сохранить небольшой размер ключа кластера, поскольку это индекс данных, которые хранятся в любом другом индексе. Например, если ваш ключ кластера состоит из 3-х целых и даты-времени, то каждая запись во всех ваших других индексах будет включать все эти данные в дополнение к тому, что вы пытались проиндексировать. По этой причине столбец идентификаторов на самом деле является довольно хорошим выбором ключа кластера, поскольку он приятен и мал.
Идеальный ключ кластера в любой ситуации может быть выбран только с большим вниманием и тщательным тестированием (с реально большими наборами данных). Наличие хорошего ключа кластера может сделать огромную разницу с SELECT
производительностью, что обычно перевешивает любое снижение производительности INSERT
.