8

常に使用するのがベストプラクティスですか -

Select E.Id,D.DeptName from Employee E join Dept D on E.DeptId=D.Id

それ以外の -

Select Employee.Id,Dept.DeptName from Employee join Dept on Employee.DeptId=Dept.Id

読みやすさとクエリの長​​さの短縮以外に、エイリアスを使用する利点は何ですか? データベースの専門家に相談したところ、エイリアスがないとクエリが壊れる可能性があると彼は言いました...完全には理解できません...誰かが考えを共有し、従うべきベストプラクティスは何ですか.. 。どうもありがとう。

4

6 に答える 6

19
  1. 破壊的なものについて言及するとき、おそらく「テーブル プレフィックスを使用する必要がある」と「ALIAS を使用する必要がある」を混同しているでしょう。

    テーブルプレフィックスを使用しないと、結合を追加した後にクエリが壊れる可能性が高くなります。元のテーブルと新しく追加されたテーブルが同じ名前の列を共有している場合。したがって、将来のメンテナンスのために、クエリのすべての列に対して常にテーブル プレフィックスを使用することをお勧めします。

    ただし、この問題は、実際のテーブル名またはエイリアス名に関係なく、列の前に ANY テーブル プレフィックスを使用することで解決されます。

  2. 同じテーブルを 2 回使用する場合は、(実際のテーブル名ではなく)エイリアスが必要です。

  3. 多くの複雑な SQL を維持してきた多くの経験から、私の意見はあなたの意見とは 100% 反対であると言わざるを得ません。

    つまり、短い、特に 1 文字のテーブル エイリアスを使用すると、コードの読み取り/保守が難しくなります。

    本番環境の緊急事態が発生している午前 2 時に、複雑なジョイントを含む長い SQL をデバッグしている場合、上記の 10 ~ 15 行を前後に調べて、どのテーブルがエイリアス "e" に一致するかを確認するのは非常に困難です。

    この点には 2 つの例外があります

    • クエリのビジネス ロジックが、テーブル名とは非常に異なる目的でテーブルを使用する場合。

    • テーブル名が不当に長く、制御できない状況のために不当である場合 - その場合でも、エイリアスは読みやすく論理的なものにする必要があります。たとえば、" EmployeeTableIndexedByUIDSourcedFromHR" は " " のエイリアスにすることができますが、通常はそうすべきですが、" " のエイリアスにすることはできませEmployeeん。E

  4. また、過度に長い文字列を避けるために、改行と配置を使用してクエリをフォーマットすると非常に役立ちます。

    Select Employee.Id,Dept.DeptName from Employee join Dept on Employee.DeptId=Dept.Id

SELECT  Employee.Id
       ,Dept.DeptName
FROM    Employee
JOIN    Dept
ON      Employee.DeptId=Dept.Id
于 2010-09-15T14:48:13.953 に答える
5

同じテーブルを 2 回参照する場合は、エイリアスを使用する必要があります。

それ以外に、私が考えることができる技術的な理由はありません。

于 2010-09-15T14:45:03.150 に答える
4

完全なテーブル名を入力するのが嫌いなので、ほとんどの場合そうします。そうしないと、あいまいな列名になってしまう可能性があります。t1、t2 などの無意味なエイリアスを使用しないでください。

于 2010-09-15T14:48:13.820 に答える
1

最も読みやすい方法は、完全修飾名を明示的に指定することです。あなたのDBの専門家と私は同意します。

しかし、それらを開発しているときは... エイリアスは間違いなくあなたの友達です。

于 2010-09-15T14:45:45.127 に答える
0

ほとんどの場合、完全修飾テーブル名を使用することを好みます。私は通常、別のデータベースの 2 つのテーブル間で内部結合が必要な場合にのみ、テーブルの別名を使用します。これは、もう少し読みやすくするためです。

Select  Employee.Name, sales.Amount
From    Employee
        Inner Join SalesDB.dbo.Sales as Sales On Employee.ID = Sales.EmployeeID

ただし、アプリケーションをダウンストリームで呼び出すために必要な変更を避けるために、フィールドにエイリアス名を使用することをお勧めします。

Select Employees.Name as [Name]
From   Employees
于 2010-09-15T18:04:46.860 に答える
-1
  1. 読みやすさを向上
  2. 異なる結合条件で同じテーブルを結合する方法を提供します
于 2010-09-15T14:46:47.517 に答える