如我所见,如果我切换PRAGMA case_sensitive_like = ON,LIKE运算符可以优化查询。我测量了一下,它确实有效,在相当大的二进制索引表上,查询“ LIKE someth%”的速度提高了十倍。
但是问题在于,我的库是作为应用程序的附件实现的,它与连接的任何数据库一起维护自己的表。所以问题是
我无法读取case_sensitive_like,因为仅支持设置它,而不是读取它。因此,我无法临时读取状态并在查询后返回状态,
作为应遵循db主要功能的插件,我不应根据自己的需要更改设置,因为它会影响其他例程。
如我所见,没有直接调用优化查询的Like(区分大小写)内部等效项。例如,使用LIKECASESENSITIVE代替LIKE
我可以调用sqlite3_create_function,但是我不知道是否可以在内部调用LIKE(CASE SENSITIVE)。
最佳答案
我看不懂case_sensitive_like
由于仅支持设置,
没看过。所以我暂时不能
读取状态并在
询问
您可以通过如下查询获得case_sensitive_like
的状态:
select case when 'a' like 'A' then 0 else 1 end
如果
1
将返回case_sensitive_like = ON
,如果0
将返回OFF
。关于sqlite - 在sqlite中使用LIKE区分大小写的便捷方法,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/1757255/