ご覧のとおり、PRAGMA case_sensitive_like=ON に切り替えると、LIKE 演算子はクエリを最適化できます。私が測定したところ、実際に機能し、クエリ「LIKE someth%」は、比較的大きなバイナリ インデックス テーブルで 10 倍速くなりました。しかし、問題は、私のライブラリがアプリケーションへのアドオンとして実装されていることです。それは、接続されている任意のデータベースで独自のテーブルを維持します。だから問題は
- case_sensitive_likeは、読み取りではなく設定のみがサポートされているため、読み取ることができません。そのため、一時的に状態を読み取ってクエリの後に返すことができず、
- データベースの主な機能に従う必要があるアドオンとして、他のルーチンに影響を与える可能性があるため、必要に応じて設定を変更しないでください。
- 私が見たように、optimizid クエリを直接呼び出すための Like(大文字と小文字を区別する) 内部同等物はありません。たとえば、LIKE の代わりに LIKECASESENSITIVE を使用します。
- sqlite3_create_function を呼び出すことはできますが、内部で LIKE(CASE SENSITIVE) を呼び出すことができるかどうかはわかりません。