Quelque chose comme ça:
SELECT
*
FROM INFORMATION_SCHEMA.TABLE_CONSTRAINTS
WHERE CONSTRAINT_NAME ='FK_TreeNodesBinaryAssets_BinaryAssets'
and TABLE_NAME = 'TreeNodesBinaryAssets'
mais pour les index.
sql-server
Lieven Cardoen
la source
la source
Réponses:
Vous pouvez le faire en utilisant une sélection simple comme celle-ci:
la source
IF EXISTS(SELECT * ...) BEGIN ... END
.YourTableName
le nom doit être complet avec le schémaPour SQL 2008 et versions ultérieures , une méthode plus concise, au niveau du codage, pour détecter l'existence d'index consiste à utiliser la
INDEXPROPERTY
fonction intégrée:L'utilisation la plus simple est avec la
IndexID
propriété:Si l'index existe, ce qui précède renverra son ID; sinon, il reviendra
NULL
.la source
AdaTheDEV, j'ai utilisé votre syntaxe et créé ce qui suit et pourquoi.
Problème: le processus s'exécute une fois par trimestre en prenant une heure en raison de l'index manquant.
Correction: modifier le processus de requête ou la procédure pour vérifier l'index et le créer s'il manque ... Le même code est placé à la fin de la requête et la procédure pour supprimer l'index car il n'est pas nécessaire mais trimestriel. Afficher uniquement la syntaxe de dépôt ici
la source
Un léger écart par rapport à la question initiale peut toutefois se révéler utile pour les futurs atterrissage ici veulent
DROP
etCREATE
un index, par exemple dans un script de déploiement.Vous pouvez contourner la vérification existante simplement en ajoutant ce qui suit à votre instruction create:
En savoir plus ici: CREATE INDEX (Transact-SQL) - Clause DROP_EXISTING
NB Comme mentionné dans les commentaires, l'index doit déjà exister pour que cette clause fonctionne sans générer d'erreur.
la source
Si le but caché de votre question est
DROP
l'index avant de créerINSERT
une grande table, alors ceci est utile à une ligne:Cette syntaxe est disponible depuis SQL Server 2016. Documentation pour
IF EXISTS
:https://blogs.msdn.microsoft.com/sqlserverstorageengine/2015/11/03/drop-if-exists-new-thing-in-sql-server-2016/
Dans le cas où vous traitez une clé de primery à la place, utilisez ceci:
la source
A écrit la fonction ci-dessous qui me permet de vérifier rapidement pour voir si un index existe; fonctionne exactement comme OBJECT_ID.
EDIT: Cela retourne juste le OBJECT_ID de la table, mais il sera NULL si l'index n'existe pas. Je suppose que vous pouvez définir cela pour renvoyer index_id, mais ce n'est pas super utile.
la source
la source
Pour vérifier que l'index clusterisé existe sur une table particulière ou non:
la source