Я наблюдаю некоторые странные проблемы с производительностью в 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
Нигде в тексте не обещано, что нули не влияют на производительность для географии.
Предполагается, что только геометрия не затронута.