親テーブルにあるすべてのレコードで、子テーブルに特定のレコードがないものを見つけるための最速の方法を見つけようとしています。たとえば、クエリで、男性の子供がいない、または子供がまったくいないすべての家族レコードを返すようにします。
例1
これは痛々しいほど遅いです:
SELECT * FROM Families
WHERE Families.FamilyID NOT IN(SELECT FamilyID FROM Children WHERE Children.Gender = "m")
例2
これはより高速です:
SELECT * FROM Families
WHERE NOT EXISTS(SELECT * FROM Children WHERE Children.Gender = "m" AND Children.FamilyID = Families.FamilyID)
例3
これは最速ですが、ドキュメントが見つからないため、投資するのが心配です。私はそれが何と呼ばれているのかさえ知りません。より良い用語を求めて、私たちはそれを「匿名クエリ」と呼んでいます。
SELECT*FROMファミリ
LEFTJOIN
[SELECT*FROM子WHEREGender="m"]。AS AliasChildren ON Families.FamilyID = AliasChildren.FamilyID
WHERE AliasChildren.FamilyID IS NULL
だから私の質問はこれです:
- 例3でこれは何と呼ばれていますか?
- 将来サポートされるのはAccessの「主流」機能ですか?
- それに関するドキュメントはどこにありますか(それが何と呼ばれているのかがわかれば、これはもっと簡単かもしれません)?
ありがとう!