Como la mayoría de las personas que trabajan con conocimientos de SQL Server, puede declarar una tabla temporal de este modo:¿Dinámicamente nombrar índices en SQL Server 2005?
create table #foo
(
row_id int identity not null primary key,
bar varchar(50) not null default 'YoMomma'
);
... Esto creará una clave principal y una restricción predeterminada en esta tabla temporal; los nombres para estos objetos serán únicos, dinámicamente creados por el servidor Sql.
¿Es posible crear un índice denominado dinámicamente para la tabla después de que se ha creado? Tengo un caso en el que un procedimiento almacenado que utiliza tablas temporales puede ejecutar varias instancias al mismo tiempo, y me gustaría aumentar el rendimiento sin poner en riesgo un conflicto entre objetos con nombres idénticos en la base de datos tempdb. El comando CREATE INDEX
requiere un nombre de índice explícito.
Estoy buscando una solución que no involucre SQL dinámico, solo nombres dinámicos.
Hmmm ... 10 años trabajando con SQL Server, y eso nunca lo supe. Simplemente asumí que los índices se trataron como objetos similares a las restricciones, pero lo probé y verifiqué que no hay conflicto. ¡Buena información! –
@JeremyHolovacs - las restricciones obtienen los metadatos almacenados en 'sys.objects', que supongo que es la razón del requisito de exclusividad, pero los índices no. –
+1 Bien, estaba bajo la misma suposición que @JeremyHolovacs – Yuck