Ho un tavolo con circa 2 milioni di dischi. Creo un indice spaziale, usando le impostazioni predefinite diverse dal riquadro di selezione. Ho notato che alcune query sono estremamente veloci e altre estremamente lente. Il fattore determinante appare alla dimensione del poligono utilizzato nella query.
Su aree di ricerca più grandi, l'utilizzo WITH(INDEX(SIX_FT5))
rallenta notevolmente la query (da 0 secondi a 15+ secondi). Su aree di ricerca più piccole, l'esatto contrario è vero.
Ecco alcune delle domande con cui sto testando:
Veloce:
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)
Qualcuno sa cosa sta succedendo qui?