Estoy escribiendo un script de actualización de base de datos que verificará si un índice tiene definidas las dos columnas correctas. Si no lo hace, o si solo tiene uno de ellos, lo DEJARÉ (¿hay alguna forma de ALTERAR un índice?) Y luego lo volveré a crear con ambos.¿Existe una consulta de T-SQL limpia que pueda usar para verificar que un índice tenga las columnas correctas?
5
A
Respuesta
7
No tengo inmediatamente una base de datos a mano para probar esto, pero debería poder ver si existe una columna en un índice utilizando la siguiente instrucción IF EXISTS.
No estoy seguro de si puede modificar un índice sobre la marcha.
IF EXISTS
(
SELECT MyIndex.Name AS IndexName,
Columns.name AS ColumnName
FROM sys.indexes MyIndex
INNER JOIN sys.index_columns IndexColumns
ON MyIndex.index_id = IndexColumns.index_id
AND MyIndex.object_id = IndexColumns.object_id
INNER JOIN sys.columns Columns
ON Columns.column_id = IndexColumns.column_id
AND IndexColumns.object_id = Columns.object_id
WHERE Columns.name = 'ColumnName'
AND MyIndex.Name='IX_MyIndexName'
)
4
Gracias por su ayuda, Ed. Aquí está la solución que escribí usando la tuya como inicio. Ha sido verificado. Básicamente tiene todas las combinaciones correctas.
IF EXISTS
(
SELECT i.Name AS IndexName, c.Name AS ColumnName
FROM sys.indexes i
JOIN sys.index_columns ic
ON i.object_id = ic.object_id AND i.index_id = ic.index_id
JOIN sys.columns c
ON ic.object_id = c.object_id AND c.column_id = ic.column_id
WHERE c.Name = 'MyColumnName' AND i.Name='MyIndexName'
)
Cuestiones relacionadas
- 1. ¿Tiene sentido usar un índice que tenga una cardinalidad baja?
- 2. ¿Cómo podemos verificar que la tabla tenga índice o no?
- 3. ¿Es posible que una tabla SQL tenga cero columnas?
- 4. ¿Existe una SqlConnection existente que pueda usar en LinqPad?
- 5. ¿Existe un atributo que pueda usar en una propiedad para decirle a DataGridView cómo formatear la columna?
- 6. ¿Existe una lista de valores que pueda usar para objectClass y objectCategory?
- 7. ¿Existe un identificador único de computadora que se pueda usar confiablemente incluso en una máquina virtual?
- 8. MySQL para una mesa con varios índices que el índice de algunas de las mismas columnas
- 9. ¿Existe una API de Subversion que se pueda usar para programar en .NET
- 10. ¿Existe un control WPF que pueda usar para expandir/colapsar paneles (animados)
- 11. Consulta para verificar el índice en una tabla
- 12. ¿Existe una versión de kdevelop que pueda instalar en Windows?
- 13. ¿Existe una cola rápida en la memoria que pueda usar para intercambiar elementos a medida que alcanza cierto tamaño?
- 14. TSQL - ISNULL en varias columnas
- 15. ¿Existe un control de diálogo de propiedad que pueda usar en mi aplicación WPF?
- 16. ¿Cómo puedo forzar una consulta para que no use un índice en una tabla determinada?
- 17. NUnit - ¿Confirma para verificar que todas las propiedades sean iguales?
- 18. ¿Cómo dice que las pruebas de su unidad son correctas?
- 19. ¿Existe una biblioteca js que pueda generar una paleta de colores a partir de una imagen?
- 20. ¿Existe un atributo que pueda agregar a una clase para que se edite como código, no en el diseñador?
- 21. ¿Hay una manera mejor de indexar columnas múltiples que crear un índice para cada permutación?
- 22. Índice de Oracle con múltiples columnas que consultan en una sola columna
- 23. Cómo limpiamente matrices índice numpy con matrices (o cualquier otra cosa que soporta además para que pueda ser compensado)
- 24. ¿Existe alguna biblioteca de código abierto que se pueda usar para buscar en Deep Web?
- 25. ¿Cómo optimizar una consulta TSQL?
- 26. ¿Existe un componente de terminal GTK que se pueda usar en Windows?
- 27. ¿Cómo paso las credenciales a una máquina para que pueda usar Microsoft.Win32.RegistryKey.OpenRemoteBaseKey() en él?
- 28. ¿Hay algún tipo de firma que Haskell no pueda verificar?
- 29. ¿Existe un servidor de autorizaciones que pueda usar para probar la implementación de OAuth 2.0 de un cliente?
- 30. ¿Cómo configuro smtp en Vista para que pueda usar System.Net.Mail?
He reparado mi respuesta para incluir esa otra condición de unión. Me alegra que pueda ser de ayuda. Puede considerar marcar su respuesta o la respuesta correcta. –