Algo como esto:
SELECT
*
FROM INFORMATION_SCHEMA.TABLE_CONSTRAINTS
WHERE CONSTRAINT_NAME ='FK_TreeNodesBinaryAssets_BinaryAssets'
and TABLE_NAME = 'TreeNodesBinaryAssets'
pero para índices.
sql-server
Lieven Cardoen
fuente
fuente

Respuestas:
Puede hacerlo usando una selección sencilla como esta:
fuente
IF EXISTS(SELECT * ...) BEGIN ... END.YourTableNamedebería ser el nombre completo con esquemaPara SQL 2008 y versiones posteriores , un método más conciso, codificado, para detectar la existencia del índice es mediante el uso de la
INDEXPROPERTYfunción integrada:El uso más simple es con la
IndexIDpropiedad:Si el índice existe, lo anterior devolverá su ID; si no lo hace, volverá
NULL.fuente
AdaTheDEV, usé tu sintaxis y creé lo siguiente y por qué.
Problema: el proceso se ejecuta una vez al trimestre y tarda una hora debido a la falta de índice.
Corrección: Alterar el proceso de consulta o el Procedimiento para verificar el índice y crearlo si falta ... El mismo código se coloca al final de la consulta y el procedimiento para eliminar el índice, ya que no es necesario sino trimestralmente. Mostrando solo la sintaxis de soltar aquí
fuente
Una ligera desviación de la pregunta original, aunque puede resultar útil para futuras personas que aterrizan aquí que quieren
DROPyCREATEun índice, es decir, en un script de implementación.Puede omitir la verificación existente simplemente agregando lo siguiente a su declaración de creación:
Lea más aquí: CREATE INDEX (Transact-SQL) - Cláusula DROP_EXISTING
Nota: Como se mencionó en los comentarios, el índice ya debe existir para que esta cláusula funcione sin generar un error.
fuente
Si el propósito oculto de su pregunta es
DROPel índice antes de hacerINSERTuna tabla grande, entonces esto es útil:Esta sintaxis está disponible desde SQL Server 2016. Documentación para
IF EXISTS:https://blogs.msdn.microsoft.com/sqlserverstorageengine/2015/11/03/drop-if-exists-new-thing-in-sql-server-2016/
En caso de que trabaje con una clave primaria, use esto:
fuente
Escribió la siguiente función que me permite verificar rápidamente para ver si existe un índice; funciona igual que OBJECT_ID.
EDITAR: Esto solo devuelve el OBJECT_ID de la tabla, pero será NULL si el índice no existe. Supongo que podría configurar esto para devolver index_id, pero eso no es súper útil.
fuente
fuente
Para comprobar que el índice agrupado existe en una tabla en particular o no:
fuente