Quand dois-je utiliser Oracle Index Organisé Table? Ou, quand ne pas le faire?
Index Organisé des Tables (IOTs) sont des tables stockées dans une structure d'index. Alors qu'une table stockée
dans un segment de mémoire est organisée de données dans un IOT sont stockés et triés par clé primaire (les données de l'index). IOTs se comportent comme des “réguliers” des tables, et que vous utilisez le même SQL pour y accéder.
Chaque table dans une bonne base de données relationnelle est censé avoir une clé primaire... Si chaque table dans ma base de données a une clé primaire, dois-je toujours utiliser un index organisé table?
Je devine la réponse est non, alors, quand est un index organisé table pas le meilleur choix?
Vous devez vous connecter pour publier un commentaire.
Fondamentalement un index organisé table est un indice sans table. Donc, si vous avez un tableau dont les colonnes sont constitués de la clé primaire et au plus une autre colonne, alors vous avez un candidat possible pour l'INDICE ORGANISÉ.
Mais si vous vous trouvez en contemplant le besoin pour plus d'indices sur la non-colonnes de clé primaire, alors vous êtes probablement mieux avec un tas de table. Donc, comme la plupart des tables probablement besoin de plus d'indices de la plupart des tables ne sont pas adaptés pour les IOTs.
Dans la pratique, l'indice a organisé des tables sont les plus susceptibles d'être des données de référence, des codes affaires. Tableaux d'Application sont presque toujours juste tas organisé.
Je voudrais examiner des tables étroites (comme les tables de jointure utilisé pour résoudre plusieurs-à-plusieurs tables). Si (presque) toutes les colonnes de la table vont être dans un index de toute façon, alors pourquoi ne devriez-vous pas utilisé un IOT.
Petites tables peuvent être de bons candidats pour les IOTs comme expliqué par Richard Foote ici
Je considère les types suivants de tables d'excellents candidats pour les IOTs:
De l'Oracle Concepts guide:
Ce question de AskTom peut également être d'un certain intérêt, surtout lorsque quelqu'un donne un scénario, puis demande serait une IOT effectuer de mieux qu'un tas organisé table, Tom réponse est:
Un index organisé table est généralement un bon choix si vous avez uniquement accès aux données de ce tableau par la clé, la clé, et la clé.
En outre, il ya beaucoup de restrictions sur ce que les autres fonctionnalités de base de données peut et ne peut pas être utilisé avec un index organisé des tables -- je me souviens que, dans au moins une version on ne pourrait pas utiliser logiques de bases de données de secours avec index organisé des tables. Un index organisé le tableau n'est pas un bon choix si elle vous empêche d'utiliser d'autres fonctionnalités.
Tous un de TES vraiment économiser est la logique de lecture(s) sur la table segment, et que vous pourriez avoir passé deux ou trois ou plus sur l'IOT/index ce n'est pas toujours une grande économie, sauf pour de petits ensembles de données.
Une autre caractéristique à prendre en compte pour accélérer les recherches, en particulier sur les plus grandes tables, est une table de hachage de cluster. Lorsqu'il est correctement créé, ils sont plus efficaces pour les grands ensembles de données que l'IDO, car ils ne nécessitent qu'une seule lecture logique pour trouver les données, tandis que l'IDO est encore un indice qui a besoin de plusieurs logiques i/o pour localiser le nœud feuille.
Je ne peux pas en soi un commentaire sur IOTs, cependant, si je suis en train de lire ce droit alors qu'ils sont le même comme un "index cluster" dans SQL Server. Habituellement, vous devez penser à ne pas utiliser un tel indice, si votre clé primaire (ou les valeur(s) vous êtes l'indexation si ce n'est pas une clé primaire) sont susceptibles d'être distribués de manière aléatoire comme ces inserts peuvent entraîner beaucoup de fractionnements de page (cher).
Des indices tels que des colonnes d'identité (séquences dans Oracle?) et des dates autour de la date actuelle tendent à faire de bons candidats pour ces indices.
Un Index Organisé Table--contrairement à une table ordinaire--a sa propre façon de structurer, de stockage et d'indexation des données.
Index organisé des tables (IOT) sont des indices qui en fait contenir les données qui est en cours d'indexation, à la différence des indices qui sont stockés quelque part d'autre et ont des liens à des données réelles.