一般に、非常に単純なクエリがあり、「ネストされたループ」ノードでの最初の選択の直後に、実際の実行プランで「結合述語なし」という警告が表示される理由がわかりません。
クエリは一目瞭然だと思います: 私にはユーザーがいて、フィードへの UserSubscriptions があります (m:n) - ユーザーが購読する必要がある 1 つのフィードからすべての FeedItems をクエリしたいので、このクエリはこれを非常にうまく行います:
select fi.Title, fi.Content, fi.Published
from [User] u
inner join UserSubscription us on u.id = us.UserId
inner join Feed f on f.id = us.FeedId
inner join FeedItem fi on fi.FeedId = f.Id
where u.EMailAddress = 'xxx@xxx.xx'
and f.id = 3
and fi.Inserted > getdate() - 30
興味深いのは、この条件を省略している限り、警告が表示されないことです。
and f.id = 3
これを削除するとすぐに、欠落している結合述語に関する警告が消えます。ここでこの警告の原因がわかりません。
これを理解する助けがあれば大歓迎です!
ありがとうございます。