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
.YourTableName
deberí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
INDEXPROPERTY
función integrada:El uso más simple es con la
IndexID
propiedad: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
DROP
yCREATE
un í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
DROP
el índice antes de hacerINSERT
una 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