Hogyan kerüljük el a szűk használata esetén ideiglenes táblák

A cikk szerint Neil Boyle a SWYNK.COM «elkerülése szűk ideiglenes táblák»

Neil azt mondja, hogy a használata ideiglenes táblák okozhat a megjelenése szűk keresztmetszeteket az adatbázis szerver. Tempdb blokkoló problémák léphetnek fel a 6.5 és 7 verziók az SQL Server. A 6.5 verziójú gyakran válasszuk. be, létrehozására ideiglenes tábla, például:

select *
figyelembe #tempTable
forrásból

Végrehajtása során ezt a kérést, az ideiglenes adatbázis lesz zárva végéig a teljes minta. Lehet, hogy egy hosszú idő, ha a forrás tábla tartalmaz nagy mennyiségű adat. A lockout, a többi felhasználó nem tud létrehozni egy ideiglenes táblákat. Tény, hogy egy szűk, hogy tempdb rendszer táblák vannak zárva (sysobjects). A későbbi verziók az SQL Server zárak változott modell, amely ezt a problémát kiküszöböli.
Annak érdekében, hogy hatását mérséklő lehetséges zárak tempdb Biztosítani kell, hogy a művelet „létre ideiglenes tábla” végzett a lehető leggyorsabban. Például, lehet használni az alábbi konstrukciót:

create table #temp (
.
)
helyezze #temp
select *
származó sourceTable

Ez a példa létrehoz egy ideiglenes táblát az elején, ami azonnal megjelent sysobjects. A zár kiold, amint lehetséges.
Ha szüksége van, hogy elkerülje a betét utasításokat. Be, illetve ha írsz csak egy kód modult, és nem tudom a pontos meghatározása a táblázatban csak a futásidőben, akkor a következő trükköt:

select *
figyelembe #temp
származó sourceTable
ahol 1 = 0

helyezze #temp
select *
származó sourceTable

A fent leírt probléma nem vonatkozik az MS SQL Server 7-es verzió, de van - az egyik esetben, ha esetleg véletlenül szűk keresztmetszetet bármely verziója.