2012-04-12 2 views

ответ

15

Некоторое время назад я представил сессию на конференции SQLBits, которая может оказаться полезной. Вы все еще можете просматривать видео и slidedeck в Интернете по адресу: http://sqlbits.com/Sessions/Event5/Creating_High_Performance_Spatial_Databases

В двух словах:

  • Пространственные индексы полностью отличаются от кластерных и некластеризованных индексов в SQL Server.
  • Они работают, предоставляя «первичный фильтр» для пространственного запроса - пространственный индекс использует сетку для выбора приблизительного набора возможных результатов кандидата, но может включать ложные срабатывания.
  • Дополнительный фильтр затем исключает ложные срабатывания для получения истинного набора результатов для запроса.
  • Ключом к получению быстродействующего пространственного запроса является создание точного индекса (т. Е. Нескольких ложных срабатываний), но небольшого (т. Е. Не слишком много записей для поиска), так что большая часть работы выполняется с помощью первичного фильтра , а не более дорогой вторичный фильтр.
  • Вы можете создать пространственный индекс в столбце геометрии/географии с помощью SQL Server Management Studio или с помощью инструкции CREATE INDEX T-SQL. Однако этот индекс не всегда может автоматически использоваться в запросах. Чтобы проверить, используется ли пространственный индекс, просмотрите план выполнения запроса для объекта Clustered Index Seek (Пространственный).
  • Чтобы убедиться, что для выполнения запроса используется пространственный указатель, вы можете добавить явный указатель индекса, включив WITH (index (YourSpatialIndex)), следуя имени таблицы в инструкции SELECT.

Существует несколько специфических параметров пространственного индекса, которые могут повлиять на производительность первичного фильтра. Для начала я рекомендую вам придерживаться значения по умолчанию, которое является СРЕДНЕГО разрешения на всех четырех уровнях сетки и 16 ячеек на объект. Если вы используете тип данных геометрии, убедитесь, что вы установили BOUNDING_BOX, который охватывает весь ваш набор данных (для географии пространственные индексы всегда охватывают весь земной шар, поэтому это необязательно). Затем попробуйте настроить одну настройку за раз и измерить увеличение/уменьшение производительности.

< штекер> Там глава, посвященная пространственной индексации и улучшения производительности пространственных запросов в наступающем «Pro Spatial с SQL Server 2012» </разъем> - http://www.amazon.com/Pro-Spatial-SQL-Server-2012/dp/1430234911/ref=sr_1_3?ie=UTF8&qid=1334310547&sr=8-3 (полный отказ от ответственности - я автор)

+0

Спасибо чувак! Ты замечательный! Это то, что я искал. – Nenad

+0

Aitchison, у меня проблема с пространственным индексом - http://stackoverflow.com/questions/11088775/error-when-using-spatial-index-in-sql-server Помогите, пожалуйста? Спасибо! – Nenad

 Смежные вопросы

  • Нет связанных вопросов^_^