LIKE 条件は、LIKE 述語を含む検索条件です。
SQL オプティマイザでは、LIKE 条件に対して以下の制約が課されます。
● 演算子は、演算子 LIKE です。
●
LIKE 条件構文は、以下になります。
<column_spec> LIKE <extended_value_spec>
● 使用する値指定(extended_value_spec) の先頭をLIKE 述語の match_string または match_set SQL 構文要素にすることはできません。
SQL オプティマイザが LIKE 条件を評価して検索方針を決定するには、LIKE 条件がこれらのいずれかの書式である必要があります。
書式 ...NOT (<column_spec> NOT LIKE <extended_value_spec>) を含む条件は、必要に応じて、<column_spec> LIKE <extended_value_spec> 式に変換されます。
これにより、SQL オプティマイザは変換した条件の処理を続行することができます。
例
SQL オプティマイザを説明するために使用する例は、スキーマ HOTEL におけるデモデータベースDEMODB とその完全なデモデータにもとづいています。
データベースシステムのコンセプト、スキーマ HOTEL のオブジェクト
SELECT * FROM hotel.customer
WHERE name LIKE 'Wa%'
修飾:
name LIKE
= 'Wa%'
テーブル CUSTOMER
の一次キー:
cno
修飾列の索引:
FULL_NAME_INDEX
(name, firstname)
使用される検索方針: RANGE CONDITION FOR
INDEX
索引 FULL_NAME_INDEX (name, firstname) を使用することができます。開始キーは、先頭の 2 文字値のLIKE 条件を満たす最初のレコード(Wade, Francisco) に設定されます。終了キーは、条件を満たさない最初のレコード (Weaver, Alfredo) にあります。
EXPLAIN 文の結果
TABLENAME |
COLUMN_OR_INDEX |
STRATEGY |
PAGECOUNT |
CUSTOMER |
FULL_NAME_INDEX |
RANGE CONDITION FOR INDEX |
34 |
|
NAME |
(USED INDEX COLUMN) |
|
|
|
RESULT IS
NOT COPIED、 |
|
その他の SQL 文の簡単な例については、SQL チュートリアルを参照してください。
参照:
SQL 参照マニュアル、LIKE 述語 (like_predicate)