「述部」は条件式であり、論理演算子 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 という文字で終わるすべての従業員を検索する場合、インデックスは役に立ちません。この結果を計算するには、それぞれのローを個別に調べるしかありません。
![]() |
DocCommentXchange で意見交換できます
|
Copyright © 2013, SAP AG or an SAP affiliate company. - SAP Sybase SQL Anywhere 16.0 |