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

SQL Anywhere 11.0.1 (日本語) » SQL Anywhere サーバ - SQL の使用法 » クエリ処理 » クエリの最適化と実行 » セマンティック・クエリ変形

 

大文字と小文字の不要な変換の排除

デフォルトでは、SQL Anywhere データベースは大文字と小文字を区別しない文字列比較をサポートしています。オプティマイザは、テキスト変換が不要な場合に、ユーザが UPPER、UCASE、LOWER、LCASE 組み込み関数を使用して、このような変換を明示的に強制しているクエリを検出することがあります。SQL Anywhere は、データベースの照合順で許可されている場合は、この不要な変換を自動的に排除します。述部の大文字と小文字の変換を排除することにより、これらの述部の一部を検索引数可能な述部に変換できる利点があります。検索引数可能な述部は、対応するテーブルのインデックス検索に使用できます。

次のクエリを考えてみます。

SELECT *
FROM Customers
WHERE UPPER(Surname) = 'SMITH';

大文字と小文字を区別しないデータベースでは、このクエリは内部的には次のように書き換えられます。そのため、オプティマイザでは Customers.Surname のインデックスを使用することを検討できます。

SELECT *
FROM Customers
WHERE Surname = 'SMITH';