从性能的角度来看,通过HTTP提供查询结果的最佳方法是什么?

时间:2012-07-18 10:27:58

标签: sql performance

我需要放弃查询结果以响应以下网址:

http://foo.com/search?from=20&perpage=10

从绩效角度来看,最佳做法是什么?

  1. 每次使用WHERE行>运行查询N和行< = K

  2. 运行一次查询并将所有结果保留一段时间

  3. 还能做些什么?

1 个答案:

答案 0 :(得分:2)

如果您的查询会产生非常少量的数据,您可以考虑来缓存结果。但想想这个:

  • 高性能分页并非无足轻重。它可以以更好的性能database-side完成(如果您使用的是Microsoft SQL Server 2012,它有自己的extensions for this)。
  • 分页由用户完成,他们需要时间阅读数据并单击“下一页”按钮。新查询的性能损失不会很大,数据库将比我们能做的更好地处理自己的缓存。
  • 缓存大量数据无用,耗费内存且效率低于新查询。

然后我的回答是每次都运行查询。您的数据库将比您更好地处理它,它将与您的数据一起扩展(否则,当您的系统有1000000条记录时,500条记录可能会被破坏)。

总结一下:数据库引擎比我们更有效地缓存数据并且它们可以更好地扩展,(通常)一个好的索引就是他们需要表现良好的所有。