rendimiento del índice espacial del servidor sql

14

Tengo una tabla con alrededor de 2 millones de registros. Creo un índice espacial, utilizando los valores predeterminados que no sean el cuadro delimitador. He estado notando que algunas consultas son extremadamente rápidas, y algunas son extremadamente lentas. El factor determinante aparece en el tamaño del polígono utilizado en la consulta.

En áreas de búsqueda más grandes, el uso de WITH(INDEX(SIX_FT5)) ralentiza considerablemente la consulta (de 0 segundos a más de 15 segundos). En áreas de búsqueda más pequeñas, exactamente lo contrario que es verdad.

Estas son algunas de las consultas con las que estoy realizando pruebas:

Rápido:

SELECT TOP(1000) * FROM [FT5] WHERE (shape.STIntersects(geometry::STGeomFromText('POLYGON ((-133462.805381701 -668610.241000959, 2934415.68824241 -668610.241000959, 2934415.68824241 2200521.65831815, -133462.805381701 2200521.65831815, -133462.805381701 -668610.241000959))', 2264)) = 1) 

Lento:

SELECT TOP(1000) * FROM [FT5] WITH(INDEX(SIX_FT5)) WHERE (shape.STIntersects(geometry::STGeomFromText('POLYGON ((-133462.805381701 -668610.241000959, 2934415.68824241 -668610.241000959, 2934415.68824241 2200521.65831815, -133462.805381701 2200521.65831815, -133462.805381701 -668610.241000959))', 2264)) = 1) 

¿Alguien sabe lo que está pasando aquí?

    
pregunta mdm20 21.03.2014 - 20:44

1 respuesta

1

Como comentado por @Vince :

  

Si lo piensas bien, cambiar el tamaño del sobre de búsqueda debería   tiene un impacto significativo en la consulta, cuantas más filas haya   Devuelto a través de un índice, cuanto más lenta sea la respuesta. En algún momento,   se vuelve más rápido al escaneo completo de la tabla y tira las filas basándose en   sobre. Te sugiero que pases más tiempo con el espacio.   opciones de índice, ya que probablemente tenga espacio para la optimización de   índice.

    
respondido por el PolyGeo 29.03.2018 - 00:48

Lea otras preguntas en las etiquetas