Domanda

Quali sono i pro e i contro dell'utilizzo di alias di tabella in SQL?Io personalmente cerco di evitare di loro, come pensano di rendere il codice meno leggibile (soprattutto durante la lettura attraverso grandi dove/e dichiarazioni), ma sarei interessata a qualsiasi tipo di contatore-punti per questo.Quando è generalmente una buona idea di utilizzare gli alias di tabella, e avete preferito formati?

È stato utile?

Soluzione

Tabella alias sono un male necessario quando si tratta con molto normalizzati in schemi.Per esempio, e io non sono architetto su questo DB in modo da portare con me, si può prendere 7 si unisce al fine di ottenere un pulito e completo record che include un nome di persona, indirizzo, numero di telefono e società di appartenenza.

Piuttosto che un po ' standard singolo carattere alias, io tendo a favore parola breve alias modo che l'esempio precedente di SQL termina come:

select person.FirstName
      ,person.LastName
      ,addr.StreetAddress
      ,addr.City
      ,addr.State
      ,addr.Zip
      ,phone.PhoneNumber
      ,company.CompanyName
from tblPeople person
left outer join tblAffiliations affl on affl.personID = person.personID
left outer join tblCompany company on company.companyID = affl.companyID

...ecc

Altri suggerimenti

Beh, ci sono alcuni casi si deve uso di loro, come quando hai bisogno di di aderire allo stesso tavolo due volte in una query.

Dipende anche se hai unici i nomi delle colonne nelle tabelle.Nel nostro database legacy abbiamo 3-lettera prefissi per tutte le colonne, provenienti da una forma abbreviata dalla tabella, semplicemente perché un antico sistema di database una volta eravamo compatibili con non ha il supporto di alias di tabella del tutto bene.

Se si hanno i nomi di colonna che si verificano in più di una tabella, indicando il nome della tabella come parte della colonna di riferimento è un must, e quindi un alias di tabella consentirà una più breve sintassi.

Sono io l'unica persona qui che davvero li odia?

In generale, io non li uso, a meno che non devo.Ho davvero odio dover leggere qualcosa di simile

select a.id, a.region, a.firstname, a.blah, b.yadda, b.huminahumina, c.crap
from table toys as a
inner join prices as b on a.blah = b.yadda
inner join customers as c on c.crap = something else
etc

Quando ho letto SQL, mi piace sapere esattamente di cosa sto selezionando quando l'ho letto;alias effettivamente mi confondono di più, perché io devo sgobbare attraverso le linee di colonne prima di ottenere effettivamente il nome della tabella, che generalmente rappresenta l'informazione circa i dati che l'alias non.Forse va bene se hai fatto l'alias, ma io comunemente leggere le domande su StackOverflow con il codice che sembra di utilizzare un alias per nessuna buona ragione.(Inoltre, a volte, qualcuno verrà a creare un alias in una dichiarazione e basta non usarlo.Perché?)

Penso che la tabella alias sono molto utilizzati perché un sacco di persone sono contrari a digitare.Io non credo che sia una buona scusa, però.Che scusa è la ragione si finisce con l'terribile nomi di variabile, terribile funzione di acronimi, il codice cattivo...vorrei prendere il tempo di digitare il nome completo.Io sono un veloce typer, però, quindi forse questo ha qualcosa a che fare con esso.(Forse in futuro, quando ho il tunnel carpale, io riconsiderare la mia opinione su alias.:P ) in particolare mi odio in esecuzione attraverso gli alias di tabella in PHP, per cui credo che non c'è assolutamente alcun motivo per farlo - solo di tipo di una volta!

Io uso sempre la colonna qualificazioni nelle mie affermazioni, ma io non sono contrario a scrivere molto, quindi sarò lieto di digitare il nome completo più volte.(Certo, io non abuso di MySQL completamento della scheda.) A meno che non è una situazione in cui devo usare un alias (come alcuni descritto in altre risposte), trovo l'ulteriore livello di astrazione ingombranti e inutili.

Edit: (Più di un anno dopo) ho a che fare con alcune stored procedure che utilizzano alias (non l'ho scritto loro e sono nuovo di questo progetto), e sono una specie di doloroso.Mi rendo conto che il motivo per cui non mi piace alias è a causa di come sono definite.Si sa come è generalmente buona norma dichiarare le variabili in cima alla vostra portata?(E di solito all'inizio di una riga?) Alias in SQL non seguono questa convenzione, che mi fa macinare i denti.Quindi, io sono per la ricerca dell'intero codice per un singolo alias per scoprire dove è (e la cosa frustrante è, devo leggere attraverso la logica prima di trovare l'alias dichiarazione).Se non fosse per il che, onestamente, come potrebbe meglio il sistema.

Se mai scrivere una stored procedure che qualcun altro avrà a che fare con sto mettendo il mio alias definizioni in un blocco di commento all'inizio del file, come un riferimento.Io onestamente non riesco a capire come voi ragazzi non impazzire senza di essa.

Microsoft SQL query optimizer vantaggi derivanti dall'uso di entrambi i nomi completi o alias.

Personalmente preferisco alias, e a meno che non ho un sacco di tabelle tendono ad essere di una singola lettera quelli.

--seems pretty readable to me ;-)
select a.Text
from Question q
    inner join Answer a
        on a.QuestionId = q.QuestionId

C'è anche un limite pratico quanto è lunga la stringa Sql può essere eseguito - alias fanno di questo limite più facile da evitare.

Buona

Come è stato detto più volte, è una buona pratica per il prefisso tutti i nomi di colonna per visualizzare facilmente la colonna che appartiene a un tavolo e gli alias sono più brevi rispetto alla piena di nomi di tabella in modo che la query è più facile da leggere e capire.Se si utilizza una buona aliasing schema del corso.

E se si crea o leggere il codice di un'applicazione che utilizza archiviati esternamente o generato dinamicamente i nomi di tabella, quindi senza alias è davvero difficile dire a prima vista che cosa tutti quei "%s"es o altri segnaposto supporto per.Non è un caso estremo, per esempio, molte applicazioni web consentono di personalizzare il prefisso del nome di tabella al momento dell'installazione.

Se scrivo una query di me (digitando nell'editor e non si utilizza un designer) ho sempre di utilizzare un alias per il nome della tabella così devo solo digitare l'intero nome della tabella di una volta.

Odio davvero la lettura di query generate da un designer con la tabella di nome come prefisso per ogni colonna del nome.

Suppongo che l'unica cosa che davvero parla contro di loro è eccessiva astrazione.Se si avrà una buona idea di ciò che l'alias si riferisce a (buon denominazione aiuta;'a', 'b', 'c' può essere molto problematico, soprattutto quando si sta leggendo la dichiarazione mesi o anni più tardi), non vedo nulla di sbagliato con aliasing.

Come altri hanno detto, si unisce richiedono li se si sta utilizzando la stessa tabella (o vista) più volte, ma anche al di fuori di tale situazione, un alias può servire a chiarire una fonte di dati allo scopo, in un contesto particolare.L'alias del nome, prova a rispondere perché sei l'accesso a determinati dati, non cosa i dati sono.

Mi piace alias!!!!Ho fatto alcune prove con l'utilizzo di loro contronon e ho visto alcuni processi di lavorazione.La mia ipotesi è la lavorazione incrementi di essere più alto quando si tratta di set di dati più grandi e complesse query nidificate che senza di loro.Se io sono in grado di eseguire questo test, ti farò sapere.

Hai bisogno di loro, se avete intenzione di partecipare a una tabella a se stesso, o se si utilizza nuovamente la colonna in una sottoquery...

Gli alias sono grandi se si considera che per la mia organizzazione di nomi di tabella come:SchemaName.DataPointName_SubPoint_Sub-SubPoint_Sub-Sub-Punto...Il mio team utilizza un grazioso set standard di abbreviazioni, in modo che la congettura è ridotto al minimo.Dovremo dire ProgramInformationDataPoint accorciato pidp, e le proposte al solo sub.

La cosa buona è che una volta che andare avanti in questo modo e la gente è d'accordo con essa, rende quelle HAYUGE file appena un po ' più piccolo e più facile da gestire.Almeno per me, un minor numero di caratteri per trasmettere le stesse informazioni sembra andare un po ' più facile per il mio cervello.

Mi piacciono lunghi esplicita i nomi di tabella (non è raro essere più di 100 caratteri) perché io uso molti tavoli, e se i nomi non sono espliciti, potrei ottenere confuso su ciò che ogni tabella memorizza.

Così, quando scrivo una query, io tendo ad usare più breve alias che ha senso nell'ambito della query e che rende il codice molto più leggibile.

Io uso sempre gli alias nella mia query ed è parte del codice guida nella mia azienda.Prima di tutto avete bisogno di pseudonimi o nomi di tabella quando ci sono le colonne con nomi identici nel join di tabelle.A mio parere, l'alias di migliorare la leggibilità nel complesso query e mi permette di vedere velocemente la posizione delle colonne.Abbiamo anche utilizzare gli alias con singola tabella, query, perché l'esperienza ha dimostrato che una singola query della tabella non rimanere sola tabella per lungo tempo.

IMHO, non importa con pochi nomi di tabella che senso, mi è capitato lavorato sul database se il nome della tabella potrebbe essere qualcosa di simile VWRECOFLY o qualche altra stringa casuale (dettate dalla società e politica) che rappresenta gli utenti, quindi, in questo caso trovo alias davvero contribuire a rendere il codice più leggibile.(gli utenti.nome utente rende molto più senso quindi VWRECOFLY.nome utente)

Io uso sempre gli alias, dal momento che per ottenere prestazioni adeguate su MSSQL è necessario prefisso con lo schema di tutti i tempi.Così potrai vedere un sacco di

Selezionare Persona.Nome Da
dbo.Persona Come Persona

Io uso sempre gli alias quando la scrittura di query.In genere io cerco e abbreviare il nome della tabella a 1 o 2 rappresentante lettere.Quindi, gli Utenti diventa u e debtor_transactions diventa dt ecc...

Esso consente di risparmiare sulla tipizzazione e porta ancora un qualche significato.

I nomi più brevi lo rende più leggibile per me....

Se non si utilizza un alias, si tratta di un bug nel codice solo in attesa di accadere.

SELECT Description -- actually in a
 FROM
 table_a a,
 table_b b
 WHERE
 a.ID = b.ID

Cosa succede quando si fa una cosa piccola come aggiungere una colonna denominata Descrizione per Table_B.Che è di destra, si otterrà un messaggio di errore.L'aggiunta di una colonna non ha bisogno di rompere nulla.Non vedo mai scrivere del buon codice, bug di codice libero, come un male necessario.

Gli alias sono necessari quando il join di tabelle con colonne con nomi identici.

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