2012-04-12 11 views
12

Quiero aprender a usar el Índice espacial en SQL SERVER 2012. Tengo una consulta que consume mucho tiempo, así que la necesito.Usando el Índice espacial

Estaría muy agradecido por algún ejemplo y explicación.

Gracias!

Respuesta

15

Presenté una sesión en la conferencia SQLBits hace un tiempo que puede serle útil. Todavía se puede ver el video y SlideDeck en línea en: http://sqlbits.com/Sessions/Event5/Creating_High_Performance_Spatial_Databases

En pocas palabras:

  • Los índices espaciales son totalmente diferentes a los índices agrupados no agrupado y en SQL Server.
  • Funcionan al proporcionar un "filtro primario" para una consulta espacial: el índice espacial usa una cuadrícula para seleccionar un conjunto aproximado de posibles resultados candidatos, pero que puede incluir falsos positivos.
  • Un filtro secundario elimina los falsos positivos para obtener el conjunto de resultados verdadero para la consulta.
  • La clave para obtener una consulta espacial de rendimiento rápido es crear un índice preciso (es decir, pocos falsos positivos) pero pequeño (es decir, no demasiados registros para buscar) para que el filtro primario realice la mayor parte del trabajo. , y no el filtro secundario más caro.
  • Puede crear un índice espacial en una columna de datos de geometría/geografía utilizando SQL Server Management Studio, o utilizando una instrucción CREATE INDEX T-SQL. Sin embargo, es posible que ese índice no siempre se use automáticamente en las consultas. Para comprobar si se está utilizando un índice espacial, consulte el plan de ejecución de consultas para un artículo Búsqueda de índice agrupado (espacial).
  • Para asegurarse de que se utiliza un índice espacial para completar una consulta, puede agregar una sugerencia de índice explícita al incluir WITH (index (YourSpatialIndex)) siguiendo el nombre de la tabla en su instrucción SELECT.

Existen varias configuraciones específicas de índice espacial que pueden afectar el rendimiento del filtro primario. Para empezar, le recomendaría que se mantenga en el valor predeterminado, que es la resolución MEDIA en los cuatro niveles de grillas y 16 celdas por objeto. Si está utilizando el tipo de datos de geometría, asegúrese de establecer un BOUNDING_BOX que abarque la totalidad de su conjunto de datos (para la geografía, los índices espaciales siempre cubren todo el mundo, por lo que no es necesario). Luego, intente ajustar una configuración a la vez y mida el aumento/disminución del rendimiento.

< enchufe> Hay un capítulo dedicado a la indexación espacial y mejorar el rendimiento de las consultas espaciales en la próxima "Pro espacial con SQL Server 2012" </enchufe> - http://www.amazon.com/Pro-Spatial-SQL-Server-2012/dp/1430234911/ref=sr_1_3?ie=UTF8&qid=1334310547&sr=8-3 (completo descargo de responsabilidad - Soy el autor)

+0

¡Gracias hombre! ¡Eres genial! Esto es lo que estaba buscando. – Nenad

+0

Aitchison, tengo un problema con el Índice espacial - http://stackoverflow.com/questions/11088775/error-when-using-spatial-index-in-sql-server ¿Puede ayudarme, por favor? ¡Gracias! – Nenad

Cuestiones relacionadas