情况如下:
我首先需要运行一个查询来知道存在多少条记录.
例如: SELECT COUNT(DISTINCT userid) from users;
通常这将是所有需要的.但是,有时(例如30%的时间)在第一次查询之后,用户将希望运行第二个查询,详细说明记录.
例如: SELECT * FROM users;
有没有理由SELECT COUNT最初运行而不仅仅是SELECT?也就是说,SQL中的记录数是否比实际拉回记录更快?或者它是以任何方式完成相同的工作,所以我应该避免做两个查询?
换句话说,最好总是在第一个查询中拉出记录(不使用COUNT),然后用代码(Java)计算记录.如果用户想要运行第二个查询,那么很好,我已经有了数据.如果没有,那就转储吧.
这里的最佳做法是什么?
cmd*_*cmd 17
如果您知道需要数据,请继续并将其拉入并在代码中计算.但是,如果您只需要计数,那么从数据库中提取计数要比实际检索行要快得多.此外,标准做法只是拉你需要的东西.
例如,如果要计算表中的所有行,则大多数数据库实现不需要查看任何行.表知道他们有多少行.如果查询在where子句中有过滤器并且它可以使用索引,那么它再次不需要查看实际行的数据,只需计算索引中的行.
而这一切并不包括传输的数据越少.
关于数据库速度的经验法则是继续并亲自尝试.一般规则并不总是一个好的指标.例如,如果表格是10行而且只有几列,我可能只是因为我需要它的机会而完全拉动整个事物,因为2次往返数据库的次数将超过查询的成本.
| 归档时间: |
|
| 查看次数: |
8851 次 |
| 最近记录: |