【发布时间】:2023-03-20 15:34:02
【问题描述】:
我们目前在我们的网站上进行了搜索,允许用户输入日期范围。该页面调用一个存储过程来查询日期范围并返回适当的数据。但是,我们的很多表都包含 30m 到 60m 行。如果用户输入的日期范围是一年(或某个较大的范围),数据库就会停止运行。
是否有任何不涉及对搜索设置时间限制的解决方案?已经实现分页以仅显示前 500 行,但数据库仍然受到重创。我们不能硬性限制返回的结果数量,因为用户“可能”需要所有结果。
【问题讨论】:
-
“仅显示前 500 个”不是硬限制吗?
-
日期有哪些索引?
-
是在数据库级别实现分页,还是在查询 60m 行然后只显示 500 行?
-
创建索引,缩小限制,每页分页 20-30 个结果。
-
分页在数据库级别实现以显示前 500 个结果。我们有一个 DBA 已经完成并创建了索引。
标签: sql sql-server database tsql stored-procedures