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

Dav*_*nck 1 vb.net sqlite

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

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

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

哪一个会更快?为什么?

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

sqlCommString = "SELECT * FROM Samples ORDER BY Timestamp DESC LIMIT 20"
Run Code Online (Sandbox Code Playgroud)

pax*_*blo 5

可能是第一个(尽管它应该是>=,而不是=得到最后的几件样品)会更快.

第二个必须检索所有行,然后对它们进行排序(尽管索引会使排序变得不必要,并且您应该为此用例索引该列)然后抛弃一些.

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

一般来说,尽可能快地减小数据集的大小会更有效(有一天看一下基数,如果你遇到那种事情,这是一个很有趣的概念).

但是,与所有优化一样,衡量,不要猜!特别是随着数据库在查询本身只是一个性能等式的一部分-数据的妆也可以有显著的影响.