Les conseils fournis dans cette rubrique visent à améliorer les performances des requêtes spatiales lorsque vous devez calculer manuellement la taille de grille d'un index spatial dans Oracle et DB2.
La taille des cellules de grille affecte la taille de la table d'index spatial. La configuration de l'index spatial nécessite d'ajuster la taille des cellules – les tailles réduites impliquent un nombre supérieur de cellules par forme, nécessitant plus d'entrées dans la table d'index spatial.
Si vous utilisez des applications clientes tierces, les applications et les profils de données spatiales peuvent varier d'un système à un autre. Dans ces cas-là, vous pouvez être tenu de tester l'index spatial, en essayant différentes tailles de cellule ou configurations de niveau de grille.
- Evaluez le nombre de niveaux de grille nécessaires sans oublier que l'optimiseur de base de données parcourt la table d'index spatial une fois par niveau de grille. Souvent, un seul niveau de grille est la meilleure solution pour une classe d'entités, malgré l'idée de distribution égale des géométries sur plusieurs niveaux de grille, afin de minimiser le nombre d'entrées de l'index spatial.
- Utilisez un seul niveau de grille pour les classes d'entités purement de type point et envisagez des tailles de cellule importantes. Les requêtes spatiales traitent généralement les géométries de type point plus rapidement que d'autres types de géométrie.
- Surveillez l'index spatial. L'optimisation d'un index spatial est difficile si les données changent fréquemment. L'optimisation dépend de la structure des données spatiales. Evaluez l'index spatial régulièrement, au fur et à mesure des changements des données spatiales.
- Dimensionnez l'index spatial sur l'application. Faites correspondre les tailles de cellule de la grille d'index spatial à l'étendue de la fenêtre d'application. Ainsi, l'application risque de consulter des entrées exactes dans la table d'index spatial. Ceci permet de dimensionner correctement la table d'index spatial et réduit les besoins de traitement, car un nombre réduit d'identifiants d'entités candidates doit être évalué par rapport à la table d'entités.
- Pour des fenêtres d'application inconnues ou variables, commencez par définir un niveau de grille ayant une taille de cellule trois fois supérieure à la taille moyenne des étendues des entités. Interrogez la table métier pour obtenir la taille d'entité moyenne. L'instruction SQL suivante renvoie la taille d'entité moyenne d'un service d'entités dans Oracle :(où <N> est la table spatiale et shape est la colonne de géométrie de la table <N>.) Une telle configuration d'index spatial réduit le nombre de lignes de la table d'index spatial en maintenant l'efficacité de l'index, car la majorité des entités peut être référencée par moins d'une ou deux cellules de grille.
SELECT (AVG(SDE.ST_MAXX(shape) – SDE.ST_MINX(shape)) + AVG(SDE.ST_MAXY(shape) – SDE.ST_MINY(shape))) / 2 from <N>;
- Concevez la table spatiale en vous basant sur des catégories de données spatiales telles que le type, la taille de géométrie et la distribution. Parfois, une classe d'entités conçue avec soin à l'aide de ces catégories peut augmenter considérablement la performance des requêtes spatiales.
Si vous créez vos données avec ArcGIS Desktop, la valeur de grille de l'index spatial est calculée pour vous.
Pour plus d'informations sur la grille d'index du module DB2 Spatial Extender, reportez-vous au manuel IBM DB2 Spatial Extender and Geodetic Extender User's Guide and Reference.