哪个更快? ORDER BY Timestamp或WHERE Timestamp =

时间:2011-06-21 02:36:30

标签: vb.net sqlite

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

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

这仅用于监控目的,因此不必精确捕获所有数据,只显示最近的值。

其中哪一项会更快?为什么呢?

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

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

1 个答案:

答案 0 :(得分:5)

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

第二个必须检索所有行,然后对它们进行排序(尽管索引会使排序变得不必要,而且你索引该列用于此用途case)然后扔掉一些。

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

一般来说,尽可能快地缩小数据集的大小会更有效率(有一天看一下基数,如果你遇到这种情况,这是一个很有吸引力的概念)。

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