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

Ovlivní použití funkce ke zjednodušení SQL Query výrazně výkon?

Normálně vybírám výsledek skalární funkce moc neublíží, ale filtrování může snadno stát stovky sekund (ne však nutně).

Pokud potřebujete filtrovat podle výsledku skalární funkce (WHERE col = dbo.scalar_function() ), často pomůže vytvořit místo toho funkci s inline tabulkou. Vrátí svou hodnotu jako jediný řádek výsledné tabulky. Potom byste provedli inner join s výsledkem funkce, efektivně filtrovat podle vrácené hodnoty. To funguje, protože SQL Server je vždy schopen rozvinout vložené funkce s hodnotou tabulky a vložit je do volajícího dotazu.

Všimněte si, že tento trik nebude fungovat, pokud je funkce vícekroková. Tyto nelze odvinout.




  1. Jak mohu číst časové razítko s hodnotou časového pásma (timestamptz) z PostgreSQL v Rustu?

  2. SQL Nejnovější fotografie z kontaktů (seskupené podle kontaktů)

  3. Oracle SEQUENCE – 'přírůstek o' a 'mezipaměť'

  4. Jak přidat pouze odlišné hodnoty pomocí SQLite Sum()