Tengo un procedimiento almacenado que funciona con una gran cantidad de datos. Tengo esos datos insertados en una tabla temporal. El flujo global de acontecimientos es algo así comoCreando una clave principal en una tabla temporal - ¿Cuándo?
CREATE #TempTable (
Col1 NUMERIC(18,0) NOT NULL, --This will not be an identity column.
,Col2 INT NOT NULL,
,Col3 BIGINT,
,Col4 VARCHAR(25) NOT NULL,
--Etc...
--
--Create primary key here?
)
INSERT INTO #TempTable
SELECT ...
FROM MyTable
WHERE ...
INSERT INTO #TempTable
SELECT ...
FROM MyTable2
WHERE ...
--
-- ...or create primary key here?
Mi pregunta es ¿cuándo es el mejor momento para crear una clave principal en mi mesa #temptable? Teoricé que debería crear la restricción/índice de la clave principal después de insertar todos los datos porque el índice debe reorganizarse a medida que se crea la información de la clave principal. Pero me di cuenta de que mi suposición subyacente podría estar equivocada ...
En caso de que sea relevante, los tipos de datos que utilicé son reales. En la tabla #TempTable
, Col1
y Col4
estarán formando mi clave principal.
Actualización: En mi caso, estoy duplicar la clave principal de las tablas de origen. Sé que los campos que conformarán mi clave principal siempre serán únicos. No me preocupa una tabla de modificaciones fallidas si agrego la clave principal al final.
Sin embargo, esto a un lado, mi pregunta sigue en pie, ¿cuál es más rápido suponiendo que ambos tendrían éxito?
P.S. Lo siento si esto es un duplicado. Es lo suficientemente básico como para ser, pero no he podido encontrar nada parecido.
Interesante. Gracias. Servicial. ¿Podrías expandirte con algunos ejemplos quizás? –
@Cade, para el índice agrupado, se refiere al orden físico en el disco, no al orden lógico (las tablas no tienen un orden lógico). –
No, el orden físico en el disco puede ser cualquier cosa. El índice agrupado es simplemente los datos almacenados en las hojas en un índice btree en lugar de en un montón. Todavía puede haber fragmentación en SQL Server y en el disco. –