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
È stato utile?

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.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top