Как я вижу, оператор LIKE может оптимизировать запрос, если я переключу PRAGMA case_sensitive_like = ON. Я измерил, это действительно сработало, запросы «LIKE someth%» становятся в десять раз быстрее в сравнительно больших двоичных индексированных таблицах.
Но проблема в том, что моя библиотека реализована как дополнение к моему приложению, она поддерживает свои собственные таблицы с любой БД, к которой она подключена. Итак, проблемы
- Я не могу прочитать case_sensitive_like , поскольку он поддерживается только для установки, но не для чтения. Поэтому я не могу временно прочитать состояние и вернуть его после запроса
- Как аддон, который должен подчиняться основным функциям БД, я не должен менять настройку в соответствии с моей потребностью в добре, поскольку она может повлиять на другие процедуры.
- Как я вижу, нет внутреннего (с учетом регистра) внутреннего эквивалента, чтобы я мог напрямую вызывать оптимизизированный запрос. Например, используйте LIKECASESENSITIVE вместо LIKE
- Я могу вызвать sqlite3_create_function, но я не знаю, могу ли я вызвать LIKE (CASE SENSITIVE) внутренне.