我听说有人说转case_sensitive_like
可以让查询更快。如果是这样,如果我们有以下2个查询选择不区分大小写的数据,您认为如何:
SELECT * FROM MyTable WHERE MyColumn LIKE '%Value%'
假设case_sensitive_like
已关闭(默认情况下),无论Value
为value
,vAlue
,valUE
,都会返回相同的结果。
PRAGMA case_sensitive_like = ON;
SELECT * FROM MyTable WHERE LOWER(MyColumn) LIKE LOWER('%Value%');
无论Value
是value
,vAlue
,valUE
,......
我希望#2的表现优于#1。
请帮忙。感谢。
PS:我认为#2的性能可以通过首先使用小写字符串的值声明值的常量来改进,或者可以在传入查询之前处理(例如在C#代码中)。
答案 0 :(得分:5)
我希望第2号查询稍慢。
与“case_sensitive_like”一样,关闭实际上是“LIKE LOWER(%...%)”但是在LIKE函数中实现 - 因此选项1在功能上是相同的,但没有调用单独函数的额外开销。 / p>
然而,由于大部分时间和资源将用于将数据从磁盘上拖出并在行中找到“MyColumn”,我怀疑这种差异是否会引人注意。