この質問の目的は、内部結合を使用して結果を除外する方法を見つけることです。
1つの列で関連付けられた2つのテーブルがあります。テーブルNames
には約100,000以上のレコードが含まれています。
Table: Names
+----+------+
| ID | Name |
+----+------+
| 1 | A100 |
| 2 | A100 |
| 3 | A100 |
| 4 | A200 |
...
Table: TableB
+----+---------------+
| ID | ChildrenCount |
+----+---------------+
| 1 | 20 |
| 2 | 25 |
| 3 | 10 |
| 4 | 70 |
...
質問1
これらのクエリのどれがより効率的ですか?
select n.[ID]
from Names n
inner join TableB b
on b.[ID] = n.[ID]
and b.[ChildrenCount] > 50
where n.[Name] Like 'A%'
また
select n.[ID]
from Names n
inner join TableB b
on b.[ID] = n.[ID]
and b.[ChildrenCount] > 50
and n.[Name] Like 'A%'
質問2
[クエリ1]は最初に句を除外してからwhere
、結果セットに対して内部結合を実行しますか、それともフィルタリングは順番に進行しますか(最初に内部結合、次にwhere句)?