改进返回许多记录的SQLite查询

时间:2016-09-12 21:03:49

标签: c# sql database sqlite petapoco

我有一个从WPF应用程序在SQLite数据库表上执行的查询;此查询可以返回大量记录(从大约80000到大约100万),我在显示之前进行了下采样。 返回700000条记录大约需要10秒钟,是否可以通过某种方式进行优化?

WHERE子句按日期时间列过滤记录:

(WHERE CollectedOn > @startTime AND CollectedOn < @endTime)

我正在选择表格的所有18列。 列数是否会影响查询的执行时间?

感谢您的评论。我应该指出更多的事情:

我收集的数据需要显示在图表中;因为我想只显示600个点,我的算法从700000个记录中每600个选择一个点。这可以在一个查询中实现吗?

1 个答案:

答案 0 :(得分:0)

这些是我会考虑的一些事情:

  • 进一步缩小返回记录的数量(您说在显示之前进行了下采样...您可以在数据库甚至WHERE子句中进行下采样吗?)
  • 你真的需要一次所有的记录吗?也许分页会有所帮助(见LIMIT and OFFSET
  • 您可以尝试使用索引来加快查询速度。使用EXPLAIN查找您的查询的确切内容......之后您可以优化联接和选择(也可以使用联接索引)。

缩小属性始终是一件好事(而不仅仅是返回所有列),但至少对于简单查询(没有子选择),它比使用WHERE子句选择正确的行的影响要小。还要搜索有关此问题的“选择”和“投影”。