php中怎么找下一个元素,php – 优化下一个和上一个元素的查询

我正在寻找的最佳方式检索记录的下一个和以前的记录,而不运行完整的查询。我有一个完全实施的解决方案,并想知道是否有任何更好的方法来做到这一点。

假设我们正在为一家虚构的蔬菜水果商建立一个网站。除了他的HTML页面,每周,他想在他的网站上发布特别优惠的列表。他希望这些提议驻留在实际的数据库表中,用户必须能够以三种方式对提议进行排序。

每个项目还必须有一个详细页面,提供更多的文本信息,“上一个”和“下一个”按钮。 “上一个”和“下一个”按钮需要指向相邻的条目,具体取决于用户为列表选择的排序。

显然,“西红柿,类I”的“下一个”按钮必须是第一个例子中的“苹果,类1”,第二个是“梨,类I”,第三个没有。

详细信息视图中的任务是确定下一个和前一个项目,而不是每次都运行查询,列表的排序顺序是唯一可用的信息(假设我们通过GET参数得到这个信息,sort = offeroftheweek_price,忽略安全影响)。

显然,简单地传递下一个和前一个元素的ID作为参数是第一个解决方案。毕竟,我们已经知道了ID在这一点上。但是,这不是一个选项 – 它将工作在这个简化的例子,但不是在我的许多现实世界的用例。

我目前的方法在我的CMS是使用我称为“排序缓存”的东西。当加载列表时,我将项目位置存储在名为sortedcache的表中的记录中。

name (VARCHAR) items (TEXT)

offeroftheweek_unsorted Lettuce; Tomatoes; Apples I; Apples II; Pears

offeroftheweek_price Tomatoes;Pears;Apples I; Apples II; Lettuce

offeroftheweek_class_asc Apples II;Lettuce;Apples;Pears;Tomatoes

显然,items列实际上是用数字ID填充的。

在详细信息页面中,我现在访问相应的排序缓存记录,获取项目列,展开它,搜索当前项目ID,并返回上一个和下一个邻居。

array("current" => "Tomatoes",

"next" => "Pears",

"previous" => null

);

这显然是昂贵的,只适用于有限数量的记录,并创建冗余数据,但让我们假设在现实世界中,创建列表的查询非常昂贵(是),在每个详细视图中运行它问题和一些缓存是需要的。

我的问题:

>你认为这是一个好的做法,找出不同查询订单的邻近记录吗?

>你知道在性能和简单方面更好的做法吗?你知道什么使这完全过时吗?

>在编程理论中,这个问题有没有名字?

>名称“排序缓存”是适当的,可以理解的这种技术吗?

>有没有任何公认的,常见的模式来解决这个问题?他们叫什么?

Note: My question is not about building the list, or how to display the detail view. Those are just examples. My question is the basic functionality of determining the neighbors of a record when a re-query is impossible, and the fastest and cheapest way to get there.

如果有不清楚的地方,请留言,我会澄清。

Starting a bounty – maybe there is some more info on this out there.

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值