Производительность SQL Server 2008 в столбце географической географии с пространственным индексом - PullRequest
3 голосов
/ 10 февраля 2011

Я наблюдаю некоторые странные проблемы с производительностью в SQL Server 2008 с обнуляемым географическим столбцом с пространственным индексом. Каждое нулевое значение сохраняется как корневой узел в пространственном индексе.

например. Таблица с 5 000 000 адресов, где 4 000 000 хранит координаты.
Каждый раз, когда я запрашиваю индекс, мне приходится сканировать все корневые узлы, то есть мне приходится сканировать 1000 узлов уровня 0. (1 корневой узел для всех действительных координат + 1M нулей)

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

На данный момент я обошел это, сохранив только существующие координаты в отдельной таблице, но я хотел бы знать, что здесь лучше всего делать?

РЕДАКТИРОВАТЬ: (дело закрыто)
Я получил некоторую помощь на форуме sql пространственный msdn, и есть сообщение в блоге об этой проблеме: http://www.sqlskills.com/BLOGS/BOBB/post/Be-careful-with-EMPTYNULL-values-and-spatial-indexes.aspx Также в документации MSDN действительно упоминается об этом, но в очень хитрой манере.

NULL и пустые экземпляры подсчитываются на уровне 0, но не повлияет спектакль. Уровень 0 будет иметь столько же клетки как NULL и пустые экземпляры в базовый стол. Для география указатели, уровень 0 будет иметь столько клеток, сколько NULL и пустые экземпляры +1 ячейка, потому что образец запроса считается 1

Нигде в тексте не обещано, что нули не влияют на производительность для географии. Предполагается, что только геометрия не затронута.

1 Ответ

3 голосов
/ 22 июля 2011

Просто последующее замечание - эта проблема была исправлена ​​в Sql Server Denali с новыми индексами AUTO_GRID (которые теперь используются по умолчанию). Значения NULL больше не будут заполняться в корневом узле индекса.

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