Помимо практических административных точек, которые вы уже получили, и подозрительного сомнительного использования отрицательных идентификаторов для представления атрибутов модели данных, здесь также существует правильный вопрос: приведите таблицу с целыми числами от 0 до N, вставляя новые отрицательные значения, где эти ценности идут, и они вызовут дополнительные расколы?
Начальные строки будут размещены на листовых страницах кластерного индекса, строка с идентификатором 0 на первой странице и строка с идентификатором N на последней странице, заполняя промежуточные страницы. Когда вставляется первая строка со значением -1, она будет отсортирована перед строкой с идентификатором 0 и, таким образом, добавит новую страницу в дерево (фактически выделит экстент из 8 страниц, но это другая точка) и свяжет страницу перед списком страниц на уровне листа. Это НЕ приведет к разделению страницы предыдущей первой страницы. При последующих вставках значений -2, -3 и т. Д. Они перейдут на ту же новую страницу и будут вставлены в правильное положение (-2 впереди -1, -3 впереди -2 и т. Д.) До заполнения страницы. Дальнейшие вставки добавят новую страницу впереди этой, которая будет соответствовать новым значениям. Вставки положительных значений N + 1, N + 2 будут идти на последнюю страницу и помещаться в нее до тех пор, пока она не заполнится, затем они добавят новую страницу и начнут заполнять эту страницу.
Таким образом, в основном ответ таков: вставки на любом конце кластерного индекса не должны вызывать разбиение страницы. Разделение страницы может быть вызвано только вставками между двумя существующими ключами. Это на самом деле распространяется и на неконечные страницы, индекс на обоих концах кластера также не может разбивать неконечные страницы. Я не обсуждаю здесь влияние обновлений , конечно (они могут привести к расщеплению, если увеличить длину столбца переменной длины).
В последнее время в блогосфере SQL Server было много разговоров о потенциальных проблемах производительности при разбиении страниц, но я должен предостеречь от перехода на ненужные крайности, чтобы избежать их. Разделение страниц - это обычная операция с индексами. Если вы окажетесь в среде, где во время вставок заметно влияние на производительность разделения страниц, вы, вероятно, будете хуже подвержены мерам «смягчения», поскольку вы создадите искусственные «горячие точки» защелки страниц, которые будут намного хуже, чем они будут. влияет на каждую вставку. То, что является верным, заключается в том, что длительная работа с частыми разбиениями приведет к высокой фрагментации, что повлияет на время доступа к данным. Я говорю, что это лучше всего смягчается с помощью периодического обслуживания индекса в непиковый период (реорганизация). Избегайте преждевременных оптимизаций, всегда измеряйте в первую очередь.