Actualmente tengo un sitio con una tabla que tiene columnas flotantes Lat/Long, y un índice sobre esas 2 columnas más otra que necesito recuperar.¿Puedo crear un índice "Covering, Spatial" en SQL Server 2008?
Estoy constantemente consultando esta tabla para obtener las filas que caen dentro de un radio desde cierto punto (en realidad estoy obteniendo un cuadrado para la velocidad), pero solo necesito los campos que ya están indexados, por lo que este índice es, de hecho, cubierta, y el plan de ejecución sólo tiene 2 etapas:
Index Seek (cost: 100%) and SELECT (cost: 0%)
Ahora, estoy tratando de tomar ventaja de las características espaciales de SQL 2008. he creado la columna de la Geografía, la llenó, creado el índice espacial, las obras.
Y todo funciona bien, excepto que el plan de ejecución tiene un millón de pasos, y el 74% del tiempo se usa en una búsqueda de índice agrupado, donde une las filas que encontró en el índice espacial con la tabla actual. para obtener el resto de los datos ...
(el índice espacial Seek lleva 1% del plan de ejecución de costes)
Así que, al parecer, se está utilizando el índice espacial adecuada y la búsqueda de los registros que necesitan mucho más rápido que antes con mi índice "regular" sobre Lat/Long, pero la unión a la tabla principal me está MATANDO, la consulta espacial toma 7 veces más que la anterior.
¿Hay alguna forma de agregar más columnas al índice espacial para que se cubra y pueda hacer las cosas en un solo paso, tal como lo hacía antes?
¿Hay otras cosas que podría hacer para mejorar esta situación?
ACTUALIZACIÓN: He encontrado que los índices "normales" pueden "incluir" otras columnas usando la palabra clave INCLUDE (que yo no sabía nada, solía basta con incluir las columnas en el propio índice)
acuerdo a la documentación here, esa cláusula no es una opción para índices espaciales ... ¿Alguna idea?
Gracias!
Daniel