Sembra essere abbastanza accettato che tra cui il proprietario dello schema nella query db aumenta le prestazioni, ad es .:e nomi di tabella completi
SELECT x FROM [dbo].Foo
vs SELECT x FROM Foo
.
Questo dovrebbe salvare una ricerca, in quanto SQL Server cercherà una tabella Foo appartenente all'utente nel contesto di connessione.
Oggi mi è stato detto che tra cui sempre il nome del database migliora le prestazioni allo stesso modo, anche se si sta interrogando il database selezionato nella stringa di connessione:
SELECT x FROM MyDatabase.[dbo].Foo
C'è qualche verità in questo? Ha senso come uno standard di codifica? Qualcuno di questo (anche il primo esempio) si traduce in benefici misurabili?
Stiamo parlando di alcuni cicli per una ricerca extra del dizionario sul server di database rispetto a più rigonfiamenti SQL e concatenazione extra sul server web (o altro client)?
Se fa la differenza, aggiunge un problema di manutenzione poiché tutte le query contengono il nome del database. Rende molto difficile rinominare un database. – adrianbanks
Dipende da cosa stai mantenendo. Avere nomi completi nella mia particolare procedura garantisce che funzioni esattamente allo stesso modo anche quando sono collegati a un diverso db nel mio ambiente di test - nel mio particolare scenario, voglio il test env. per produrre risultati di "produzione" per quanto riguarda il proc memorizzato.Forse non è una buona pratica, mi rendo conto, ma il nostro ampio panorama di data-store non ha controparti completamente riprodotte in uno stato pulito, sandbox in un dominio TEST separato, quindi, molti dei nostri ambienti TEST/DEV sono, nel migliore dei casi, un mix di dati falsi e di produzione. – bkwdesign