【问题标题】:Which is faster? ORDER BY Timestamp or WHERE Timestamp =哪个更快? ORDER BY Timestamp 或 WHERE Timestamp =
【发布时间】:2011-06-21 10:43:22
【问题描述】:

我正在建立一个 sqlite 数据库,它将监控许多物理传感器。一个单独的应用程序正在将数据保存几个月......这个应用程序将只监视该数据采集。我想确保我的查询尽可能高效。

我想从传感器中提取最后几个读数。将有大约 20 种不同类型的传感器,每种传感器都有不同的传感器 ID。

这只是为了监控目的,所以它不必精确捕获所有数据,只显示最近的值。

哪些会更快?为什么?

sqlCommString = "SELECT * FROM Samples WHERE Timestamp = '" + DateTime10SecondsAgo + "'

sqlCommString = "SELECT * FROM Samples ORDER BY Timestamp DESC LIMIT 20"

【问题讨论】:

  • 你不想Timestamp >= ...吗?另外,您为什么不尝试两者并找出哪个更快?
  • 我做了 Timestamp equals,因为传感器每秒读取一次,所以我总是在十秒后收集全套读数,而不是在读数之间。但是,是的,还不如只做> =。谢谢。将进行测试。

标签: vb.net sqlite


【解决方案1】:

可能第一个(虽然应该是 >= 而不是 = 来获取最后几个样本)会更快。

第二个必须检索所有行,然后对它们进行排序(尽管索引会使排序变得不必要,并且您非常应该索引该列以供此使用case) 然后扔掉一些。

第一个只检索那些需要的。

一般来说,尽可能快地减少数据集的大小会更有效(有一天看看基数,如果你喜欢这种东西,这是一个很有趣的概念)。

但是,与所有优化一样,衡量,不要猜测! 特别是对于查询本身只是性能方程式的一个一部分的数据库 -数据也会产生重大影响。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2020-08-06
    • 1970-01-01
    • 2023-03-11
    • 1970-01-01
    • 1970-01-01
    • 2011-11-16
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多