InList は、インデックスを使用して IN リスト述部を満たすことができる場合に使用されます。たとえば、次のクエリの場合、オプティマイザはプライマリ・キー・インデックスを使用して Employees テーブルにアクセスできることを認識します。
SELECT * FROM Employees WHERE EmployeeID IN ( 102, 105, 129 ); |
これを行うために、左側に特別な IN リスト・テーブルを指定したジョインが構築されます。ローは IN リスト・テーブルからフェッチされ、Employees テーブルの調査に使用されます。
InList を使用するには、IN リスト述部内の各要素が定数であるか、または最適化時に定数と評価される値 (CURRENT DATE、CURRENT TIMESTAMP、非決定的システム関数、ユーザ定義関数) や、クエリ・ブロック 1 回の実行中に定数である値 (外部参照) であることが必要です。たとえば、次のクエリでは InList を使用できます。
SELECT *, ( SELECT FIRST GivenName FROM Employees e WHERE e.DepartmentID IN ( 500, d.DepartmentID ) ORDER BY e.DepartmentID ) FROM Departments d; |
同じインデックスを使用して、複数の IN リスト述部の条件を満たすことができます。
Copyright © 2009, iAnywhere Solutions, Inc. - SQL Anywhere 11.0.1 |