哪个SQLite查询表现更好?

时间:2013-04-11 09:38:41

标签: sql performance sqlite

我听说有人说转case_sensitive_like可以让查询更快。如果是这样,如果我们有以下2个查询选择不区分大小写的数据,您认为如何:

  1. SELECT * FROM MyTable WHERE MyColumn LIKE '%Value%'

    假设case_sensitive_like已关闭(默认情况下),无论ValuevaluevAluevalUE,都会返回相同的结果。

  2. PRAGMA case_sensitive_like = ON;
    SELECT * FROM MyTable WHERE LOWER(MyColumn) LIKE LOWER('%Value%');

    无论ValuevaluevAluevalUE,......

  3. ,这也会返回相同的结果

    我希望#2的表现优于#1。

    请帮忙。感谢。

    PS:我认为#2的性能可以通过首先使用小写字符串的值声明值的常量来改进,或者可以在传入查询之前处理(例如在C#代码中)。

1 个答案:

答案 0 :(得分:5)

我希望第2号查询稍慢。

与“case_sensitive_like”一样,关闭实际上是“LIKE LOWER(%...%)”但是在LIKE函数中实现 - 因此选项1在功能上是相同的,但没有调用单独函数的额外开销。 / p>

然而,由于大部分时间和资源将用于将数据从磁盘上拖出并在行中找到“MyColumn”,我怀疑这种差异是否会引人注意。