Maison > base de données > Oracle > Comment Oracle détermine-t-il si un index n'est pas valide ?

Comment Oracle détermine-t-il si un index n'est pas valide ?

WBOY
Libérer: 2022-05-25 15:31:15
original
6186 Les gens l'ont consulté

Dans Oracle, vous pouvez utiliser l'instruction « select status from user_indexes which index_name='index name'; » pour déterminer si l'index est invalide ; si le résultat renvoyé est VALID, cela signifie que l'index n'est pas invalide, sinon il signifie que l'index n'est pas valide.

Comment Oracle détermine-t-il si un index n'est pas valide ?

L'environnement d'exploitation de ce tutoriel : système Windows 10, version Oracle 11g, ordinateur Dell G3.

Comment Oracle détermine-t-il si l'index est invalide ?

La syntaxe est la suivante :

select status from user_indexes where index_name='索引名称';
Copier après la connexion

Si le résultat renvoyé est VALIDE, cela signifie que l'index est valide !

L'exemple est présenté dans la figure :

Comment Oracle détermine-t-il si un index nest pas valide ?

Connaissances étendues :

Solution en cas d'échec d'indexation

1. Choisissez un optimiseur Oracle approprié

Il existe 3 types d'optimiseurs Oracle :

a RÈGLE. (Basé sur des règles) b. COÛT (basé sur les coûts) c.

Définissez l'optimiseur par défaut via diverses déclarations de paramètres OPTIMIZER_MODE dans le fichier init.ora, tels que RULE, COST, CHOOSE, ALL_ROWS, FIRST_ROWS. Bien sûr, vous le remplacez également au niveau de l'instruction SQL ou au niveau de la session.

Pour utiliser l'optimiseur basé sur les coûts (CBO, Cost-Based Optimizer), vous devez exécuter fréquemment la commande d'analyse pour augmenter la précision des statistiques d'objets dans la base de données.

Si le mode d'optimisation de la base de données est défini sur sélectif (CHOOSE), le mode d'optimisation réel sera lié à l'exécution ou non de la commande d'analyse. Si la table a été analysée, le mode optimiseur deviendra automatiquement CBO. Dans le cas contraire, la base de données utilisera la forme RULE de l'optimiseur.

(Table d'analyse

analyze table PROD_PARTS compute statistics;
ANALYZE TABLE PROD_PARTS COMPUTE STATISTICS FOR ALL INDEXED COLUMNS;
analyze table PROD_PARTS compute statistics for table for all indexes for all indexed columns;
Copier après la connexion

) [Après un échec d'index, après avoir consulté le DBA, j'ai découvert qu'il s'agissait d'un problème de statistiques de données. La solution spécifique est d'exécuter l'instruction ci-dessus]

Par défaut, Oracle utilise CHOOSE. Afin d'éviter des analyses de table complètes inutiles, vous devez essayer d'éviter d'utiliser l'optimiseur CHOOSE et d'utiliser directement un optimiseur basé sur des règles ou basé sur les coûts.

2.‍Reconstruire l'index

‍alter index 索引名 rebuild 【online】
Copier après la connexion

3. Forcer l'index

Après avoir ajouté un indice à l'instruction, forcez-la à utiliser 'RECORD_ENTITYID'. L'index

sql devient comme ceci

Quote

select /*+ index(record,record_entityid) */ *
from RECORD
where entityId='24' and entityType='blog';
Copier après la connexion

/*+ index(. record,record_entityid) */, index signifie une utilisation forcée de l'index, record est le nom de la table et record_entityid est le nom de l'index. Le plan d'exécution est cohérent avec la base de données de test, tous deux utilisant l'index 'RECORD_ENTITYID', et la lecture et l'écriture logiques sont également de 4.

Après des tests ultérieurs, après avoir analysé la table et les deux index sans ajouter d'indices, l'index 'RECORD_ENTITYID' peut également être utilisé. Cependant, comme le tableau est mis à jour assez fréquemment, je ne sais pas combien de temps il faudra pour l'analyser à nouveau

Tutoriel recommandé : "Tutoriel vidéo Oracle"

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Étiquettes associées:
source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal