Frage

Was sind die vor-und Nachteile der Verwendung von table-Aliase in SQL?Ich persönlich versuchen, Sie zu vermeiden, wie ich denke, Sie machen den code weniger lesbar (vor allem beim Lesen durch die großen, wo/und Aussagen), aber ich wäre daran interessiert zu hören, jedes counter-Punkte dazu.Wann ist es generell eine gute Idee, die Verwendung von Tabellen aliases und haben Sie eine bevorzugte Formate?

War es hilfreich?

Lösung

Tabelle Aliase sind ein notwendiges übel beim Umgang mit stark normalisierten schemas.Zum Beispiel, und ich bin nicht der Architekt auf das DB so mit mir tragen, es kann nehmen 7-Verknüpfungen, um eine saubere und vollständige Aufzeichnung zurück, die gehören der name einer person, Adresse, Telefonnummer und Firmenzugehörigkeit.

Eher als die etwas standard single-character aliases ich eher zu Gunsten kurzes Wort Aliase, so dass das obige Beispiel die SQL endet auf der Suche wie:

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

...etc

Andere Tipps

Nun, es gibt einige Fälle, Sie muss verwenden Sie Sie, wenn Sie Notwendigkeit zu verbinden, um dieselbe Tabelle zweimal in einer Abfrage.

Es hängt auch davon ab, ob Sie eine eindeutige Spalte Namen auf Tischen.In unserem legacy-Datenbank haben wir 3-Buchstaben-Präfixe für alle Spalten, die aus einer verkürzten form vom Tisch, einfach weil man alten Datenbank-system, das wir einst kompatibel mit nicht-support-Tabelle aliases gut.

Wenn Sie die Spaltennamen auftreten in mehr als einer Tabelle, die Angabe, der name der Tabelle, die als Teil der Spalte Referenz ist ein muss, und damit eine alias-Tabelle wird für eine kürzere syntax.

Bin ich die einzige person hier, die wirklich hasst?

Im Allgemeinen glaube ich nicht, wenn ich muss.Ich habe gerade wirklich hasse es, etwas zu Lesen, wie

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

Wenn ich lese, SQL, möchte ich genau wissen, was ich auswähle, wenn ich es lese;Aliase tatsächlich verwirren mich mehr, denn ich habe auf Ochsentour durch die Zeilen der Spalten, bevor ich eigentlich auf den Namen der Tabelle, die in der Regel stellt Informationen über die Daten, die der alias nicht.Vielleicht ist es okay, wenn Sie die Aliase, aber ich habe Häufig gelesen, die Fragen auf StackOverflow mit code, scheint Aliase verwendet werden für keinen guten Grund.(Zusätzlich, manchmal wird jemand einen alias erstellen, die in einer Anweisung und nur es nicht verwenden.Warum?)

Ich denke, dass Tabellen-aliases verwendet werden, so viel, weil eine Menge von Menschen, die abgeneigt sind zu Tippen.Ich glaube nicht, dass das eine gute Ausrede, obwohl.Diese Ausrede ist der Grund, warum wir am Ende mit schrecklichen Benennung von Variablen, die schrecklichen Funktion Akronyme, schlechten code...ich würde die Zeit nehmen, zu geben die volle name.Ich bin eine schnelle typer, obwohl, so vielleicht das hat etwas damit zu tun.(Vielleicht in der Zukunft, wenn ich habe Karpal-tunnel, ich werde zu überdenken meiner Meinung nach auf Aliase.:P ) bin ich besonders hasse laufen über Tabellen-aliases in PHP-code, wo ich glaube, es gibt absolut keinen Grund, das zu tun - Sie habe nur zu geben Sie es einmal!

Ich benutze immer column Qualifier in meinen Aussagen, aber ich bin nicht abgeneigt, der Eingabe eine Menge ist, so werde ich gerne geben Sie den vollständigen Namen mehrere Male.(Zugegeben, ich mache Missbrauch MySQL Registerkarte Fertigstellung.) Es sei denn, es ist eine situation, wo ich um einen alias zu verwenden (wie einige beschrieben in den anderen Antworten), finde ich die zusätzliche Abstraktionsschicht umständlich und unnötig.

Edit: (Über ein Jahr später) bin ich um einige gespeicherte Prozeduren, die Aliase verwenden (die ich nicht schreiben und ich bin neu in diesem Projekt), und Sie sind schmerzhaft.Ich merke, dass der Grund, warum ich nicht wie Aliase ist, weil, wie Sie definiert sind.Sie wissen, wie es ist generell eine gute Praxis um Variablen zu deklarieren, auf die top von Ihre Rahmen?(Und in der Regel am Anfang einer Zeile?) Aliase in SQL nicht Folgen dieser Konvention, das lässt mich meine Zähne mahlen.Also, ich Suche den Quellcode für ein einziges alias, um herauszufinden, wo es ist (und was frustrierend ist, ist, ich habe zu Lesen, durch die Logik vor finde ich die alias-Deklaration).Wenn es nicht für das, ganz ehrlich, ich könnte, wie das system besser.

Wenn ich jemals eine gespeicherte Prozedur schreiben, dass jemand anderes zu tun haben, ich bin putting mein alias-Definitionen in einem kommentarblock am Anfang der Datei, die als eine Referenz.Ich kann ehrlich gesagt nicht verstehen, wie man Jungs nicht verrückt werden, ohne es zu sein.

Microsoft SQL-Abfrage-Optimierer und den nutzen von entweder vollständig qualifizierte Namen oder Aliase.

Persönlich bevorzuge ich die Aliase, und es sei denn, ich habe viele Tabellen Sie neigen dazu, einzelne Buchstaben lieben.

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

Es gibt auch eine praktische Grenze, wie lange ein Sql-string ausgeführt werden kann - Aliase stellen Sie diese Grenze leichter zu vermeiden.

Gut

Wie es bereits erwähnt wurde mehrere Male vor, ist es eine gute Praxis, Präfix alle Spalte-Namen, um schnell zu sehen, welche Spalte gehört zu welchem Tisch - und-Aliase sind kürzer als die vollständige Tabelle zu benennen, damit die Abfrage einfacher zu Lesen und somit zu verstehen.Wenn Sie einen guten aliasing-Schema des Kurses.

Und wenn Sie erstellen oder Lesen Sie den code einer Anwendung, die verwendet werden extern gespeichert oder dynamisch generierten Tabelle Namen, dann ohne Aliase es ist wirklich schwer zu sagen, auf den ersten Blick, was all diese "%s" - es oder andere Platzhalter stehen für.Es ist nicht ein extremer Fall, zum Beispiel viele web-apps können anpassen die Tabelle Präfix zum Zeitpunkt der installation.

Wenn ich eine Abfrage schreiben, mich selbst (durch Eingabe in den editor und nicht mit einem designer), die ich immer verwende Aliase für die Tabellennamen nur, damit ich nur geben Sie den vollständigen Tabellennamen einmal.

Ich hasse es zu Lesen-Abfragen generiert, das von einem designer mit dem vollständigen Tabellennamen als Präfix für jede Spalte name.

Ich nehme an, das einzige, was spricht wirklich gegen die übertriebene Abstraktion.Wenn Sie eine gute Idee, was der alias verweist auf (gute Benennung hilft;'a', 'b', 'c', kann ziemlich problematisch, vor allem, wenn Sie sind zu Lesen Sie die Anweisung Monate oder Jahre später), ich sehe nichts falsch mit aliasing.

Wie andere gesagt haben, tritt erfordern wenn Sie sind mit den gleichen Tabelle (oder Ansicht) mehrere Male, aber auch außerhalb dieser situation, einen alias können dazu dienen zu klären, eine Datenquelle Zweck in einem bestimmten Zusammenhang.In der alias-Namen, versuchen zu beantworten warum Sie sind der Zugriff auf bestimmte Daten, die nicht was die Daten ist.

Ich LIEBE Aliase!!!!Ich habe einige tests durchgeführt, mit Ihnen gegennicht und haben gesehen, wie einige der Verarbeitung Gewinne.Meine Vermutung ist, dass die Verarbeitung Gewinne, die höher wäre, wenn Sie mit größeren Datensätzen und die komplexe, verschachtelte Abfragen als ohne.Wenn ich in der Lage bin, dies zu testen, werde ich es dich wissen lassen.

Sie brauchen Sie, wenn Sie gehen, um an einem Tisch zu sich selbst, oder wenn Sie die Spalte wieder in einer Unterabfrage...

Aliase sind großartig, wenn man bedenkt, dass meine Organisation hat die Tabelle wie folgt benannt:SchemaName.DataPointName_SubPoint_Sub-SubPoint_Sub-Sub-SubPoint...Mein team verwendet ein ziemlich standard-set von Abkürzungen, so die Spekulationen ist minimiert.Wir müssen sagen, ProgramInformationDataPoint gekürzt pidp, und Einreichungen, um einfach nur sub.

Die gute Sache ist, dass, wenn Sie gehen in dieser Art und Weise und Stimmen mit es, es macht jene HAYUGE Dateien, die nur ein wenig kleiner und leichter zu verwalten.Zumindest für mich, weniger Zeichen zu vermitteln, die gleichen Informationen zu gehen scheint, ein wenig leichter in mein Gehirn ein.

Ich mag lange expliziten Tabellennamen (es ist nicht ungewöhnlich, mehr als 100 Zeichen), weil ich mit vielen Tabellen und wenn die Namen nicht explizit, ich könnte verwirrt werden, was jede Tabelle speichert.

Also, wenn ich eine Abfrage schreiben, Neige ich dazu, verwenden Sie kürzere Aliase, die sinnvoll sind, innerhalb des Umfangs der Abfrage und das macht den code viel lesbarer.

Ich immer verwenden Sie Aliase in meiner Abfragen und es ist ein Teil des Codes guidebook in my company.Erste von alle Sie brauchen, Aliase oder Tabellennamen, wenn es Spalten mit identischen Namen in den beteiligten Tabellen.Meiner Meinung nach die Aliase, die die Lesbarkeit bei komplexen Abfragen und ermöglichen mich zu sehen, wie schnell die Lage der einzelnen Spalten.Wir selbst verwenden Sie Aliase mit single table queries, denn die Erfahrung hat gezeigt, dass einzelne Tabelle Abfragen dont Aufenthalt Tisch lang.

IMHO, ist es eigentlich egal, mit kurzen Tabelle Namen, die sinnvoll sind, habe ich gelegentlich arbeitete auf Datenbanken, in denen der name der Tabelle könnte so etwas wie VWRECOFLY oder einige andere zufällige Zeichenfolge (diktiert von Unternehmen, Politik), die wirklich repräsentiert Anwender, also in dem Fall finde ich Aliase, die wirklich helfen, um die code, die WEIT mehr lesbar.(die Benutzer.Benutzername macht viel mehr Sinn, dann VWRECOFLY.username)

Ich habe immer Aliase verwenden, da eine gute Leistung auf MSSQL müssen Sie das Präfix mit-schema zu allen Zeiten.So werden Sie sehen, eine Menge von

Wählen Sie Person.Name Von
dbo.Person Als Person

Ich habe immer Aliase verwenden, wenn Sie Abfragen zu schreiben.In der Regel versuche ich abkürzen der name der Tabelle 1 oder 2 Vertreter Buchstaben.So Benutzer wird u und debtor_transactions wird dt etc...

Es spart die Eingabe und trägt immer noch einige Bedeutung.

Die kürzere Namen macht es lesbarer zu mir, so gut.

Wenn Sie nicht verwenden Sie einen alias, es ist ein Fehler in Ihrem code, die nur darauf warten zu passieren.

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

Was passiert, wenn Sie eine kleine Sache wie fügen Sie eine Spalte " Beschreibung Table_B.Das ist richtig, erhalten Sie eine Fehlermeldung.Hinzufügen eine Spalte, die nicht brauchen, etwas zu brechen.Ich sehe nie das schreiben von code, bug free code, als ein notwendiges übel.

Aliase sind erforderlich, wenn das verknüpfen von Tabellen mit Spalten, die den gleichen Namen haben.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top