Index spatiaux et ST_Geometry
Les index spatiaux utilisés avec ST_Geometry sont implémentés différemment selon le SGBD utilisé. Le module IBM Informix Spatial DataBlade et l'implémentation ST_Geometry dans PostgreSQL utilisent un index d'arborescence R pour indexer les données spatiales. ST_Geometry dans Oracle et DB2 utilise une valeur d'index spatial.
Un index spatial peut être créé de plusieurs façons :
- Pour les grilles d'index, vous pouvez cliquer sur Ajouter sous l'onglet Index de la boîte de dialogue Propriétés de la classe d'entités d'ArcCatalog. Reportez-vous à la rubrique Définition des index spatiaux.
- Utilisez l'utilitaire de commande d'administration sdelayer. Consultez le manuel ArcSDE Administration Command Reference.
- Utilisez SQL. Reportez-vous à la rubrique Création d'index spatiaux pour les tables ayant une colonne ST_Geometry.
- Utilisez les interfaces de programmation d'applications (API) C d'ArcSDE ou JAVA. Consultez le Centre de ressources de géodatabase.
- Faites repasser une classe d'entités du mode E/S de chargement seul en mode E/S normal à l'aide de la commande sdelayer avec les opérations normal_io et load_only_io. ArcSDE supprime et recrée automatiquement tout index spatial créé par ArcSDE, chaque fois qu'une classe d'entités passe du mode LOAD_ONLY_IO au mode NORMAL_IO.
Lorsque vous effectuez des requêtes de relations spatiales sur des tables qui contiennent des colonnes ST_Geometry, elles utilisent un index spatial pour accélérer le processus de requête uniquement lorsque vous exécutez certaines fonctions de relations spatiales. Ces fonctions sont répertoriées dans Cas d'utilisation des index spatiaux.
Oracle
Une classe d'entités créée à l'aide du type de stockage ST_Geometry avec un index spatial crée une table supplémentaire dans la base de données Oracle. La table d'index spatial est nommée S<n>_IDX$, où <n> est la valeur de l'index de géométrie de la table. La valeur peut être obtenue en interrogeant la table SDE.ST_GEOMETRY_COLUMNS. La table d'index spatial est créée comme une table de type IOT (Indexed Organized Table) Oracle. L'index spatial sur l'attribut ST_Geometry apparaît sous la forme A<n>_IX1 en cas d'affichage avec Enterprise Manager. La valeur de <n> représente la valeur LAYER_ID stockée dans la table LAYERS.
Deux index supplémentaires sont créés sur la table S<n>_IDX$, à savoir : S<n>$_IX1 et S<n>$_IX2. Vous pouvez spécifier le mode de stockage de ces index dans le SGBD en modifiant le paramètre S_STORAGE dans le mot-clé de configuration DBTUNE que vous spécifiez lors de la création d'une classe d'entités.
Si vous créez des tables métier partitionnées contenant une colonne ST_Geometry, peut-être souhaiterez-vous également que l'index spatial soit partitionné. Il existe deux types de méthode de partitionnement : global et local. Par défaut, ce sont les index partitionné globaux qui sont créés sur les tables métier partitionnées. Pour créer un index partitionné local, vous devez ajouter le mot-clé LOCAL à la fin de l'instruction CREATE INDEX. Pour permettre à ArcGIS d'ajouter LOCAL à la fin de l'instruction CREATE INDEX pour l'index spatial, définissez le paramètre ST_INDEX_PARTITION_LOCAL sur TRUE sous le mot-clé DEFAULTS.
PostgreSQL
Dans PostgreSQL, l'index d'arborescence R est implémenté à l'aide de l'infrastructure d'index GiST (Generalized Search Tree). Pour plus d'informations sur l'indexation GiST, reportez-vous au chapitre 51 de la documentation PostgreSQL 8.3.
IBM DB2 et Informix
Pour plus d'informations sur les index spatiaux dans DB2, reportez-vous à la rubrique Index spatiaux générés par DB2 Spatial Extender. Pour plus d'informations sur les index spatiaux dans Informix, reportez-vous à la rubrique Index spatiaux dans les géodatabases Informix.