デフォルトでは、SQL Anywhere データベースは大文字と小文字を区別しない文字列比較をサポートしています。オプティマイザは、テキスト変換が不要な場合に、ユーザが UPPER、UCASE、LOWER、LCASE 組み込み関数を使用して、このような変換を明示的に強制しているクエリを検出することがあります。SQL Anywhere は、データベースの照合順で許可されている場合は、この不要な変換を自動的に排除します。述部の大文字と小文字の変換を排除することにより、これらの述部の一部を検索引数可能な述部に変換できる利点があります。検索引数可能な述部は、対応するテーブルのインデックス検索に使用できます。
次のクエリを考えてみます。
SELECT * FROM Customers WHERE UPPER(Surname) = 'SMITH'; |
大文字と小文字を区別しないデータベースでは、このクエリは内部的には次のように書き換えられます。そのため、オプティマイザでは Customers.Surname のインデックスを使用することを検討できます。
SELECT * FROM Customers WHERE Surname = 'SMITH'; |
Copyright © 2009, iAnywhere Solutions, Inc. - SQL Anywhere 11.0.1 |