Tabelle temporanee di SQL Server 2005
-
09-06-2019 - |
Domanda
In una procedura memorizzata, quando viene creato #Temptable in SQL Server 2005?Quando si crea il piano di esecuzione della query o quando si esegue la procedura memorizzata?
if (@x = 1)
begin
select 1 as Text into #Temptable
end
else
begin
select 2 as Text into #Temptable
end
Soluzione
Domanda interessante.
Per il tipo di tabella temporanea che stai creando, penso che sia quando viene eseguita la procedura memorizzata.Le tabelle create con il prefisso # sono accessibili alla sessione SQL Server in cui vengono create.Una volta terminata la sessione, vengono eliminati.
Questo URL: http://www.sql-server-performance.com/tips/query_execution_plan_analysis_p1.aspx sembra indicare che le tabelle temporanee non vengono create quando vengono creati i piani di esecuzione delle query.
Altri suggerimenti
Viene creato quando viene eseguito e rilasciato al termine della sessione.
Sebbene possa essere eliminato automaticamente alla fine di una sessione, è buona norma eliminare la tabella da soli una volta terminata.
Potresti anche prendere in considerazione le variabili di tabella, il cui ciclo di vita è completamente gestito per te.
DECLARE @MyTable TABLE (MyPK INT IDENTITY, MyName VARCHAR(100))
INSERT INTO @MyTable ( MyName ) VALUES ( 'Icarus' )
INSERT INTO @MyTable ( MyName ) VALUES ( 'Daedalus' )
SELECT * FROM @MyTable
Utilizzo quasi sempre questo approccio, ma presenta degli svantaggi.In particolare, puoi utilizzare solo indici che puoi dichiarare all'interno del costrutto TABLE(), il che significa essenzialmente che sei limitato solo alla chiave primaria, senza utilizzare ALTER TABLE.