sql >> Databáze >  >> RDS >> Sqlserver

Tabulka hodnotná funkce Killing My Query Performance

Vrácením proměnné tabulky se z ní stane funkce s více příkazy v tabulce a může to být špatné pro výkon kvůli skutečnosti, že se s ní zachází jako s tabulkou, kromě toho, že pro SQL Server nejsou k dispozici žádné statistiky, na kterých by mohl založit dobrý plán provádění - takže funkce bude odhadovat, že vrací velmi malý počet řádků. Pokud vrátí větší počet řádků, pak by vygenerovaný plán mohl být mnohem menší než optimální.

Zatímco vrácení pouze SELECT z něj dělá funkci s hodnotou vložené tabulky - berte to spíše jako pohled. V tomto případě se do hlavního dotazu dostanou skutečné podkladové tabulky a na základě správných statistik lze vygenerovat lepší plán provádění. Všimnete si, že v tomto případě plán provádění NEBUDE obsahovat zmínku o funkci vůbec, protože je to v podstatě jen sloučeno s funkcí do hlavního dotazu.

Je o něm skvělá reference na MSDN od CSS SQL Server Engineers včetně (citace):



  1. Jaký je nejlepší způsob synchronizace dat mezi MS Access a MySQL?

  2. Funkce GREATEST() v Oracle

  3. Jak napsat tabulku v PostgreSQL z R?

  4. Nelze zakázat ochranu stavu relace na Oracle APEX 18.1.0.00.45 pro dynamické akce při aktualizaci položek stránky