Подтвердить что ты не робот

Использование пространственного индекса

Я хочу узнать, как использовать Spatial Index в SQL SERVER 2012. У меня есть очень трудоемкий запрос, поэтому мне это нужно.

Я был бы очень благодарен за какой-то пример и объяснение.

Спасибо!

4b9b3361

Ответ 1

Я представил сессию на конференции SQLBits некоторое время назад, что вы можете найти полезной. Вы можете просматривать видео и слайдек онлайн по адресу: 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, который охватывает весь ваш набор данных (для географии пространственные индексы всегда охватывают весь земной шар, поэтому это необязательно). Затем попробуйте настроить одну настройку за раз и измерить увеличение/уменьшение производительности.

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