sql >> Database teknologi >  >> RDS >> Sqlserver

Lokale vs globale temp-tabeller - Hvornår skal man bruge hvad?

Ingen af ​​delene

Hvis du vil cache resultatsæt under din egen kontrol, kan du ikke bruge midlertidige tabeller af nogen art. Du bør bruge almindelige brugertabeller, gemt enten i tempdb eller endda have din egen cachedatabase for resultatsæt.

Temp-tabeller, bot #local og ##shared har en levetid styret af forbindelsen/forbindelserne. Hvis din applikation afbryder forbindelsen, slettes den midlertidige tabel, og dette fungerer ikke godt med det, du beskriver.

Det virkelig vanskelige problem vil være at udfylde disse cachelagrede resultatsæt under samtidige kørsler uden at blande tingene sammen (ender med resultatsæt, der indeholder duplikerede elementer fra samtidige rapportkørsler, som begge mente var den "første" kørslen).

Som en sidebemærkning gør SQL Server Reporting Services allerede dette ude af kassen. Du kan cache og dele datasæt, du kan cache og dele rapporter, det virker allerede og blev testet for dig.



  1. SQL Server:Filteroutput af sp_who2

  2. lokale samlingstyper er ikke tilladt i SQL-sætninger

  3. org.hibernate.Query .iterate() VS .getResultList() forespørgselsgenerering

  4. Sådan finder du de tre øverste kolonnetotaler ved hjælp af SQL