Domanda

Abbiamo un fornitore consegnato database che a questo punto sono stato in grado di evitare di apportare modifiche a struttura del database. Saremo presto interrogare direttamente le tabelle direttamente per un progetto correlato. Al fine di tirare tutti i dati di cui abbiamo bisogno, avremo bisogno di creare un'istruzione SQL grande con più sindacati.

select ... from table1
union
select ... from table2
...
select ... from tableN

La velocità è la massima priorità per questo progetto. Sarebbe più veloce per creare una vista per fare il join poi basta tua ricerca questo punto di vista (e, quindi, di apportare modifiche al fornitore del database) o semplicemente eseguire l'istruzione unione dalla nostra applicazione?

So che i potenziali problemi connessi a tali modifiche al fornitore del database in modo così perché sto cercando per il feedback.

È stato utile?

Soluzione

Quando si tratta di database vendor sarei molto riluttanti a modificare le tabelle esistenti. L'aggiunta di qualcosa di simile a una vista sembra un po 'più sicuro dal momento che sei l'unico che verrà utilizzato. La mia più grande preoccupazione con la vista sarebbe se mai avuto un aggiornamento dal fornitore che ha fatto modifiche al DB e si potrebbe perdere la vista.

Non credo che ci si vede alcun miglioramento delle prestazioni dal utilizzando la vista, a meno che non si è utilizzato una vista indicizzata. Purtroppo non è possibile creare indici su una vista che viene creato utilizzando un sindacato (almeno in SQL Server).

Personalmente, quando si tratta di mettere in applicazione logica vs metterlo nel DB I magra verso DB. Nella mia esperienza di questi tipi di cambiamenti sono più facili da implementare e mantenere.

Se fossi nella tua situazione vorrei andare avanti creare la vista se si renderà la vita più facile. Ma ancora una volta, non aspettatevi miglioramento delle prestazioni.

Altri suggerimenti

Non una vista non sarà più veloce (tranne che per i tempi di sviluppo).

Che cosa sarebbe più veloce è quello di utilizzare UNION ALL se funzionerà. UNION cerca i record duplicati e li rimuove dal risultato finale. Se si conosce il record in base alla progettazione (come ogni tavolo è per un clinet differente o di ogni tavolo ha un intervallo di date differente) non può essere duplicato, UNION ALL non cercare di DISTINCT il gruppo di risultati e corre quindi molto più veloce.

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