我将保持场景简单:
- 有一个应用程序,有一个数据库。
- 在数据库中,有一张表,记录量很大
- 我定期向应用程序提供这些记录
现在,一次重新加载可能意味着其中一些更改: i. 第二组中的新记录。更新了第 iii 组中的记录。集合中已删除的记录
最后,对于保持不变的记录,我可以使用比通过 ODBC 读取表快 100 倍的不同进程。
知道这一点后,我试图通过尽可能少地使用 ODBC 来减少重新加载时间,并且在我的算法中途遇到了一个我无法解决的问题。
select count(*) where [condition]
**反对速度快多少select columnName where [condition]
为什么?因为只需重新加载新的和更新的记录,我就可以根据[条件]通过计数记录来计算是否有删除。然后,如果有删除,我将不得不从数据库中读取剩下的那些。通常,新记录和更新记录的数量将是整个记录的一小部分。如果计数比普通选择快得多,我可能想将其用作快速检查,因为删除记录不是常见的活动。
它实际上取决于您在执行查询和收集统计信息时使用的数据库。
此外,
WHERE
从句和 in 中的列COUNT()
也很重要。它们可能是索引,也可能不是索引等等。考虑查询之间的性能有很多标准,但在大多数情况下,建议使用第一个标准来获取行数。如果我有特定的例子,我可以更准确地告诉你。