Domanda

Ho uno scenario in cui combino due tabelle in una sola (utilizzando UNION) e si uniscono anche i dati da alcune altre tabelle.

I possibile eseguire questa operazione con una vista o un'UDF / funzione definita dall'utente.

Considerando che non ho vista così lontano a tutti nel mio database, ma un bel po 'di UDF per la ricerca full-text e simili, sono tentato di usare un'UDF per questo scenario e per tenerlo "pulito".

Tuttavia, questo è del tutto soggettiva e mi chiedevo se c'è una ragione migliore obiettivo di andare sia per una vista o una funzione definita dall'utente in questo scenario.

ho confrontare piani di query per entrambi e sono la stessa identica quindi non credo che ci sia una riduzione delle prestazioni o di un vantaggio per l'utilizzo di uno dei due.

C'è altro motivo per scegliere uno sopra l'altro o non è vero importa?

È stato utile?

Soluzione

I sarebbe sempre utilizzare le funzioni in ordine di sofisticazione. Un punto di vista è relativamente semplice in termini di profilo delle prestazioni e la gestione della sicurezza. Io probabilmente usarlo prima.

Sto assumendo si sta parlando di una tabella con valori in linea UDF, che sarà più o meno avere caratteristiche prestazionali identiche. Sicurezza su un UDF è un po 'diverso e non si può avere, invece di trigger per essere in grado di fare "inserti" a vista. Un vantaggio del FSU sarebbe che è possibile forzare i parametri da fornire, garantendo così modelli di utilizzo sono come previsto, mentre una vista può essere interrogato senza criteri (forse casualmente).

Se hai finisce che vogliono avere un'UDF per la parametrizzazione, è possibile sovrapporre sulla parte superiore della vista (quindi non la duplicazione del codice) e si dovrebbe trovare che le prestazioni non è influenzato in modo significativo, perché l'ottimizzatore può combinare di vista e Inline TVF abbastanza con successo.

Altri suggerimenti

Un vantaggio che vedo utilizzando questo scenario come punto di vista è di indicizzare loro e li usa come "viste indicizzate", dove a differenza di una visione tradizionale c'è un file fisico che viene creato e quindi l'esecuzione di query è più veloce dove ci sono notevoli quantità di righe in esso. Il molto effetto di utilizzare questo è quello di bypassare il unisce e sindacati per tutte le righe invece solo loro a costruire per le nuove righe.

Come il nostro amico ha suggerito Cade, si CUD utilizzare una vista all'interno di un'UDF per mantenerlo pulito e non è un lotto differente.

Spero che questo aiuti!

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top