2

ご覧のとおり、PRAGMA case_sensitive_like=ON に切り替えると、LIKE 演算子はクエリを最適化できます。私が測定したところ、実際に機能し、クエリ「LIKE someth%」は、比較的大きなバイナリ インデックス テーブルで 10 倍速くなりました。しかし、問題は、私のライブラリがアプリケーションへのアドオンとして実装されていることです。それは、接続されている任意のデータベースで独自のテーブルを維持します。だから問題は

  • case_sensitive_likeは、読み取りではなく設定のみがサポートされているため、読み取ることができません。そのため、一時的に状態を読み取ってクエリの後に返すことができず、
  • データベースの主な機能に従う必要があるアドオンとして、他のルーチンに影響を与える可能性があるため、必要に応じて設定を変更しないでください。
  • 私が見たように、optimizid クエリを直接呼び出すための Like(大文字と小文字を区別する) 内部同等物はありません。たとえば、LIKE の代わりに LIKECASESENSITIVE を使用します。
  • sqlite3_create_function を呼び出すことはできますが、内部で LIKE(CASE SENSITIVE) を呼び出すことができるかどうかはわかりません。
4

1 に答える 1

6

case_sensitive_like 読み取りではなく設定のみがサポートされているため、読み取ることができません。そのため、状態を一時的に読み取ってクエリの後に返すことはできません

case_sensitive_like次のようなクエリで状態を取得できます。

select case when 'a' like 'A' then 0 else 1 end

1場合case_sensitive_like = ONに返されます。0OFF

于 2009-11-18T17:40:38.507 に答える