据我所知,如果我切换 PRAGMA case_sensitive_like=ON,LIKE 运算符可以优化查询。我测量过,它确实有效,查询“LIKE someth%”在相对较大的二进制索引表上变得快十倍。 但问题是我的库作为我的应用程序的附加组件实现,它维护自己的表及其连接的任何数据库。所以问题是
- 我无法读取case_sensitive_like,因为它仅支持设置,不支持读取。所以暂时无法读取状态并在查询后返回,
- 作为一个应该遵循数据库主要功能的插件,我不应该根据我的需要更改设置,因为它可能会影响其他例程。
- 据我所知,没有类似(区分大小写)的内部等效项可供我直接调用 optimizid 查询。例如,使用 LIKECASESENSITIVE 而不是 LIKE
- 我可以调用sqlite3_create_function,但我不知道是否可以在内部调用LIKE(CASE SENSITIVE)。
最佳答案
I can not read
case_sensitive_like
since it is only supported to be set, not read. So I can not temporarily read the state and return it after the query
您可以使用如下查询获取 case_sensitive_like
的状态:
select case when 'a' like 'A' then 0 else 1 end
如果 case_sensitive_like = ON
,则返回 1
;如果 OFF
,则返回 0
。
关于sqlite - 在 sqlite 中使用 LIKE 区分大小写的便捷方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1757255/