クエリでは、テーブルのサイズや構造など、多くの詳細が省略されています。ただし、エンティティの名前に基づいて、詳細の一部を推測できます。
まず、SQLite では、すべてのテーブルに主キーが与えられます。各テーブルに主キーを定義して、これを利用する必要があります。
Employees.ID
が主キーの候補であるEmployees
(つまり、値が一意である)と仮定すると、それを主キーとして定義する必要があります。これはインデックスのように機能します。
この構造では、エンジンはテーブルを読み取り、Orders
テーブル内の値を検索することでクエリを処理する必要がありEmployees
ます。Orders
テーブルが よりも大きいと仮定すると、Employees
これがクエリを満たすための最も効率的な方法になると思います。
つまり、それEmployees.ID
が主キーであることを確認してください。
編集:
両方のテーブルを読み取る必要があります。基本的に 3 つのオプションがあります。両方のテーブルを並べ替えてから、それらをマージできます。ソートにはコストがかかるため、これはコストがかかります。
いずれかのテーブルを順番に読み取り、もう一方の値を調べることができます。テーブルのシーケンシャル読み取りは、(インデックス ルックアップによる) ランダム読み取りよりも高速です。orders
おそらく小さいテーブルのインデックスルックアップを使用して、大きなテーブルでシーケンシャル読み取りを行う方が高速employees
です。
orders
テーブルの幅が非常に広い (列が多い) 場合は、インデックスを付けるorders(id, orderdate)
ことで改善される可能性があります。これは「カバリング」インデックスであるため、元のデータにアクセスする必要はありません。