Click here to view and discuss this page in DocCommentXchange. In the future, you will be sent there automatically.

SQL Anywhere 12.0.1 » SQL Anywhere サーバー SQL の使用法 » データの問い合わせと修正 » クエリ

 

クエリの述部

「述部」は条件式であり、論理演算子 AND や OR と組み合わせて、WHERE 句、HAVING 句、または ON 句に条件のセットを構成します。SQL では、UNKNOWN と評価される述部が FALSE として解釈されます。

インデックスを使用してテーブルからローを取り出すことができる述部を、「検索引数可能 (sargable)」 であるといいます。この名前は、search argument-able というフレーズからとったものです。定数、他のカラム、または式とカラムとの比較を伴う述部は、検索引数可能です。

次に示す文の述部は、検索引数可能です。SQL Anywhere は、Employees テーブルのプライマリインデックスを使用して、この文を効率的に評価できます。

SELECT *
FROM Employees
WHERE Employees.EmployeeID = 102;

最適なアクセスプランでは、これは次のように表示されます。 Employees<Employees>.

反対に、次に示す述部は、検索引数可能ではありません。EmployeeID カラムはプライマリインデックスでインデックスが付けられていますが、結果にはすべてのローまたは 1 つを除くすべてのローが格納されるため、このインデックスを使用しても計算速度は上がりません。

SELECT *
FROM Employees
where Employees.EmployeeID <> 102;

最適なアクセスプランでは、これは次のように表示されます。 Employees<seq>.

同様に、名前が k という文字で終わるすべての従業員を検索する場合、インデックスは役に立ちません。この結果を計算するには、それぞれのローを個別に調べるしかありません。

 関数
 例
 参照