SQL: let op bij tijdelijke tabellen
In SQL gebruiken we tijdelijke tabellen om gegevens even in op te slaan als onderdeel van een groter statement.
Er zijn verschillende vormen van tijdelijke tabellen: je kan gebruik maken van subqueries, je kan MERGE gebruiken of je hebt een tijdelijke tabel (zij het tijdelijk binnen de context van de connectie, zij het tijdelijk binnen een global scope).
In alle gevallen zijn er een aantal dingen waar je op moet letten:
Tijdelijke tabellen hebben vaak geen FOREIGN KEY-relatie. Dit kan ervoor zorgen dat de performance van je query eronder gaat lijden. Kortom, maak een FK aan. Maar dat is niet altijd mogelijk. In het geval van MERGE en subqueries, kan je, door de aard van de tabellen, geen relaties aanleggen. Dit is wel mogelijk bij tijdelijke tabellen.
Tijdelijke tabellen worden in tempdb gezet. Dat is geen fysieke tabel en de database kan moeite hebben de juiste executie van je statement te bepalen. Dit kan er dus ook voor zorgen dat je queries langzaam worden. In dat geval is niet alleen snelheid een risico, de hele server kan probleem krijgen als tempdb te groot wordt.
Zorg er dus voor dat je relaties aanlegt bij tijdelijke tabellen. Mocht dat niet mogelijk zijn, zoals bij MERGE, zorg er dan in ieder geval voor dat de result sets zo klein mogelijk zijn. Is ook geen optie, dan is het wellicht verstandig je data in een fysieke tabel op te slaan.