2009-11-18 49 views
2

正如我看到LIKE運算符可以優化查詢,如果我切換PRAGMA case_sensitive_like = ON。我衡量,它確實有效,查詢「LIKE someth%」在分區大的二進制索引表上變得快十倍。 但問題是我的庫作爲我的應用程序的附加組件實現,它使用它連接的任何數據庫維護其自己的表。所以,問題是在sqlite中使用LIKE case sensivity的便捷方式

  • 我不能讀 case_sensitive_like,因爲它僅支持到設置,不讀。所以我不能暫時讀取狀態並在查詢後返回它,作爲一個應該服從db的主要功能的插件,我不應該將該設置更改爲我的需要,因爲它會影響其他例程。
  • 正如我所看到的那樣,我沒有Like(區分大小寫)的內部等價物來直接調用optimizid查詢。例如使用LIKECASESENSITIVE而不是LIKE
  • 我可以調用sqlite3_create_function,但我不知道我是否可以在內部調用LIKE(CASE SENSITIVE)。

回答

6

我不能讀case_sensitive_like ,因爲它僅支持到設置, 不讀。所以我暫時不能 閱讀狀態和 查詢

你可以用這樣一個查詢得到的case_sensitive_like狀態後返回它:

select case when 'a' like 'A' then 0 else 1 end 

這將如果case_sensitive_like = ON返回10如果它是OFF