【发布时间】:2013-12-05 09:04:37
【问题描述】:
在我的数据库中,我有一个包含相当大数据集的表,用户可以对其执行搜索。因此对于包含大约 250,000 条记录的 Person 表的以下表结构:
firstName|lastName|age
---------|--------|---
John | Doe |25
---------|--------|---
John | Sams |15
---------|--------|---
用户将能够执行可以返回大约 500 个左右结果的查询。我想做的是允许用户使用分页一次看到他的搜索结果 50。我已经弄清楚了客户端分页的东西,但我需要在某个地方存储查询结果,以便分页使用来自他的唯一查询而不是来自 SELECT * 语句的结果。
任何人都可以就实现这一目标的最佳方式提供一些指导吗?谢谢。
旁注:我一直在尝试通过使用 SELECT INTO 语句来使用临时表来执行此操作,但我认为如果用户 A 执行搜索并且他的结果存储在临时表,然后用户 B 不久后执行搜索,用户 A 的搜索结果被覆盖。
【问题讨论】:
-
搜索之间有什么不同?
-
实际查询本身。用户 A 可能搜索
SELECT * FROM Person WHERE age BETWEEN 10 AND 20,用户 B 可能搜索SELECT * FROM Person WHERE age = 25。对于每个查询,我希望其结果存储在某种类型的缓存中,并且客户端的分页脚本对存储在相应缓存中的结果进行分页,而不是再次运行 SQL 查询。想想 Google 在您进行搜索时提供的体验。
标签: sql sql-server database pagination