J'ai une table contenant environ 2 millions d'enregistrements. Je crée un index spatial, en utilisant les valeurs par défaut autres que la boîte englobante. J'ai remarqué que certaines requêtes sont extrêmement rapides et d'autres extrêmement lentes. Le facteur déterminant apparaît à la taille du polygone utilisé dans la requête.
Sur les zones de recherche plus grandes, l'utilisation WITH(INDEX(SIX_FT5))
ralentit considérablement la requête (de 0 seconde à 15+ secondes). Sur les petites zones de recherche, l'exact opposé est vrai.
Voici quelques-unes des requêtes avec lesquelles je teste:
Vite:
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)
Lent:
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)
Quelqu'un sait ce qui se passe ici?
Réponses:
Comme l'a commenté @Vince :
la source