2

如我所见,如果我切换 PRAGMA case_sensitive_like=ON,LIKE 运算符可以优化查询。我测量过,它确实有效,查询“LIKE someth%”在比较大的二进制索引表上变得快十倍。但问题是我的库作为我的应用程序的附加组件实现,它使用它连接的任何数据库维护自己的表。所以问题是

  • 我无法读取case_sensitive_like,因为它只支持设置,不支持读取。所以我暂时无法读取状态并在查询后返回,
  • 作为一个应该遵守数据库主要功能的插件,我不应该将设置更改为我的需要,因为它会影响其他例程。
  • 正如我所见,我没有直接调用 optimizid 查询的 Like(区分大小写)内部等效项。例如使用 LIKECASESENSITIVE 而不是 LIKE
  • 我可以调用 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 回答