リンクされている 2 つのテーブルがあるとします (一方には他方への外部キーがあります)。
CREATE TABLE Document (
Id INT PRIMARY KEY,
Name VARCHAR 255
)
CREATE TABLE DocumentStats (
Id INT PRIMARY KEY,
DocumentId INT, -- this is a foreign key to table Document
NbViews INT
)
これが最も賢明な方法ではないことはわかっていますが、これは私が思いつく最良の例です。
ここで、ビュー数が 500 を超えるすべてのドキュメントを取得したいと考えています。私の頭に浮かぶ2つの解決策は次のとおりです。
SELECT *
FROM Document, DocumentStats
WHERE DocumentStats.Id = Document.Id
AND DocumentStats.NbViews > 500
また:
SELECT *
FROM Document
INNER JOIN DocumentStats ON Document.Id = DocumentStats.Id
WHERE DocumentStats.NbViews > 500
両方のクエリは同等ですか、それとも他の方法よりもはるかに優れた方法がありますか? もしそうなら、なぜですか?
編集:回答で要求されているように、この質問は SQL Server を対象としていましたが、他のデータベース エンジン (MySQL など) とは異なるかどうかを知りたいと思います。