Moyen rapide pour déterminer si un champ existe dans une table ORACLE
Je suis à la recherche d'un rapide sql phrase pour déterminer quand un champ existent ou non dans un tableau .
en fait, je suis en utilisant cette phrase
Select 1
from dual
where exists (select 1
from all_tab_columns
where table_name = 'MYTABLE'
and column_name = 'MYCOLUMN')
Je pense qu'il doit y avoir un moyen le plus rapide pour déterminer si oui ou non une colonne existe dans ORACLE.
Mise à JOUR
Je suis de l'optimisation d'un plus grand système logiciel qui lance plusieurs appels à cette Requête, je ne peux pas modifier le code source ;( , seulement, je peux modifier la requête qui est stockée dans un fichier externe.
la Table all_tab_columns a plus d'un million d'enregistrements.
Si la performance est un problème sur cette requête, il sonne comme il ya quelque chose de mal avec votre modèle de données. Pouvez-vous expliquer pourquoi vous avez besoin de cela?
Pourquoi avez-vous besoin d'une rapide requête pour cela? Quel est le problème avec la lecture de la table de décrire de sortie? Ou pourquoi ne pouvez-vous pas lu le DDL qui a créé le modèle?
Pourquoi avez-vous besoin d'une rapide requête pour cela? Quel est le problème avec la lecture de la table de décrire de sortie? Ou pourquoi ne pouvez-vous pas lu le DDL qui a créé le modèle?
OriginalL'auteur RRUZ | 2010-02-16
Vous devez vous connecter pour publier un commentaire.
la clé primaire de
all_tab_columns
estowner, table_name, column_name
donc à la recherche d'un particulier propriétaire sera plus rapide (ou utilisezuser_tab_columns
).OriginalL'auteur Vincent Malgrat
Je suggère la lecture de ce AskTom article. Il explique que le meilleur moyen de vérifier est de ne pas vérifier.
http://asktom.oracle.com/pls/asktom/f?p=100:11:0::::P11_QUESTION_ID:698008000346356376
OriginalL'auteur Joseph Bui
De l'interrogation du dictionnaire de données Oracle - comme vous l'exemple en effet, c'est probablement le moyen le plus rapide.
Le dictionnaire de données est mis en cache dans la mémoire et devrait être en mesure de satisfaire à la requête assez rapidement. Vous pouvez être en mesure d'obtenir un peu plus rapide résultats si vous connaissez le réel propriétaire du schéma de la table de sorte que vous n'avez pas à supporter le coût de la recherche à l'encontre de tous les schémas.
OriginalL'auteur LBushkin
Cette requête est assez:
Le seul moyen le plus rapide est de requête directement à partir de la table interne qui n'est pas une méthode recommandée pour et vous avez besoin des subventions de plus de sys objets:
Cette requête est prise à partir de la
USER_TAB_COLUMNS
définition et il peut changer au fil des différentes versions (10gR2 sur mon cas). Sur cette requête, j'ai coupé les références à l'information ne sont pas demandés par vous.De toute façon, pourquoi voulez-vous vérifier?
OriginalL'auteur FerranB
Cette Requête SQL va donner le nom de la table ayant la colonne "NAVIGATION_ID" pour l'utilisateur "DSGIDEV'
sélectionnez * à partir de all_tab_cols où column_name = 'NAVIGATION_ID" et propriétaire = 'DSGIDEV'
Donc, de Changer le nom de la colonne à la colonne que vous voulez la recherche et le propriétaire avec votre propriétaire nom de l'Id.
OriginalL'auteur Ranveer Singh
Ez, de la façon la plus rapide est simplement de créer la fonction comme ceci:
OriginalL'auteur Summer23 HV