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 notado que algunas consultas son extremadamente rápidas y otras 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 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 es cierto.
Estas son algunas de las consultas con las que estoy probando:
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í?
Respuestas:
Como comentó @Vince :
fuente