获取有序列表中的下一个和上一个记录

时间:2016-02-26 10:06:25

标签: mysql

我目前正在使用PHP来解析已排序的记录列表,并获取给定记录的上一条和下一条记录。我的数据库已经增长了很多,查询花了太多时间。

我想更改查询,以便它只返回上一个和下一个记录,并且还需要更少的时间。也许我需要添加一个索引。

这是当前的查询:

SELECT id 
  FROM events 
 WHERE latitude BETWEEN 48.772559580567 AND 48.952423619433 
   AND longitude BETWEEN 2.2154977888952 AND 2.4889022111048 
 ORDER 
    BY start_time ASC
     , id

我必须按start_time& amp; id因为几个事件可以同时开始。我必须使用一种排序,以便列表是常量,下一个& prev按钮始终使用相同的算法。

这目前需要0.1到0.4秒,这太长了。然后我需要在PHP中解析6000个返回的行以获取下一个和之前的记录。

我读过很多类似的话题,但似乎没有一个能解决速度问题。我发现" min(id)FROM ... WHERE recordid> targetid UNION max(id)FROM ... WHERE recordid<目标ID"这意味着加倍0.1至0.4秒。

DB的架构:

  • id int(11)
  • 纬度加倍
  • 经度双
  • start_time timestamp

索引:

  • id PRIMARY
  • 纬度
  • 经度
  • 纬度经度+

0 个答案:

没有答案