Specifica dettagliata della tabella esatta o implicita

2

Considera le seguenti due query in SQL (Transact SQL):

UPDATE [database_name].[dbo].[table_name]
SET [database_name].[dbo].[table_name].[field_name] = @value
WHERE [database_name].[dbo].[table_name].[field_name] = @searchvalue

e l'alternativa

UPDATE [database_name].[dbo].[table_name]
SET field_name = @value
WHERE field_name = @searchvalue

Quale di questi è preferibile? Entrambi funzionano allo stesso modo di quello che posso dire. Dal punto di vista del design, è uno superiore all'altro? Perché?

Specificamente nel contesto di una procedura memorizzata molto grande (più di 500 righe, distribuita su più database e tabelle).

    
posta Magisch 10.04.2017 - 13:38
fonte

3 risposte

4

Questi sono funzionalmente esattamente uguali.

Il secondo è (molto) preferito per la leggibilità.

L'unica possibile giustificazione per specificare completamente tutto è rimuovere l'ambiguità se si hanno più tabelle, ma anche in questo caso sarebbe meglio usare gli alias di tabella piuttosto che i nomi completi (sempre a fini di leggibilità).

    
risposta data 10.04.2017 - 13:43
fonte
4

Il secondo è generalmente più leggibile e quindi migliore da usare. la prima opzione ripete molte informazioni che occupano spazio sullo schermo e ti costringe a filtrare continuamente le informazioni ripetute che possono farti perdere le informazioni importanti dei nomi delle colonne.

Inoltre è generalmente una buona idea specificare solo le cose che potrebbero essere potenzialmente diverse. Il nome del tuo database non sarà diverso a meno che non si chiami un database remoto, quindi non utilizzandolo ovunque diventa evidente dove si verificano questi tipi di cose.

    
risposta data 10.04.2017 - 13:52
fonte
2

Quando si tratta di scrivere script amministrativi o di manutenzione / manutenzione dei dati, essere espliciti è una buona pratica, specialmente se li si esegue da SQL Server Management Studio, dove la connessione e la selezione del database sono un po 'più ad hoc e manuali. Ci sono modi (istruzione USE) per dichiarare che il database riduce il tuo codice diventando troppo prolisso.

Se stai scrivendo il codice dell'applicazione in SQL Server ci sono altri modi nella tua connessione per determinare l'istanza del server e il database, così puoi andare via senza scriverli nel tuo codice se non sono richiesti. Proprio come l'uso di un alias della tabella, aiuta con la leggibilità. Includere sempre schema.

    
risposta data 10.04.2017 - 23:02
fonte

Leggi altre domande sui tag