Ответ 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 (полное выражение об отказе от ответственности - Я автор)