我目前正在使用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的架构:
索引: