gpt4 book ai didi

php - 当前时间之前的缓慢查询和返回时间

转载 作者:行者123 更新时间:2023-11-29 02:30:02 24 4
gpt4 key购买 nike

我的网站加载速度非常慢,只有一个页面加载速度慢,我怀疑这是因为向数据库发送了 MySQL 查询。我怎样才能加快速度?

$depquery = "SELECT * FROM phpvms_schedules 
WHERE code = 'FE'
AND locate(dayofweek(convert_tz(now(),'+1:00','+0:00'))-1,".TABLE_PREFIX."schedules.daysofweek)>0
AND phpvms_schedules.enabled = '1'
ORDER BY deptime ASC";

该查询主要用于将信息提取到“出发板”表中。该表按 deptime 排序, 它显示从当前时间开始的结果。但是,我还希望它返回至少 4 个记录,即当前时间之前的 4 个航类。

为了澄清,让我举个例子:

现在是 15:25。因为if(($flight->deptime) >= $time)if($count < 15)foreach里面它将在该时间及之后显示 15 条记录。但是,我还想返回 4 条记录,所以它会在 15:25 之前找到最后 4 条记录。这可能吗?

基本上,我想在当前时间前后上下搜索。

最佳答案

你想要一个 UNION,类似于:

SELECT * phpvms_schedules 
WHERE code = 'FE'
AND locate(dayofweek(convert_tz(now(),'+1:00','+0:00'))-1,
".TABLE_PREFIX."schedules.daysofweek)>0
AND phpvms_schedules.enabled = '1'
ORDER BY deptime ASC
LIMIT 15
UNION ALL
SELECT * phpvms_schedules
WHERE code = 'FE'
AND locate(dayofweek(convert_tz(now(),'+1:00','+0:00'))-1,
".TABLE_PREFIX."schedules.daysofweek)<0
AND phpvms_schedules.enabled = '1'
ORDER BY deptime DESC
LIMIT 4

请注意,我没有猜测您的日期函数,因为我不知道它在做什么。我只是将 > 更改为 <,并将 deptime 的排序更改为 DESC。 (其中一个 < > 可能还需要有一个 = 才不会错过现在的出发时间?)

使用 LIMIT 将在数据库中进行过滤,而不是在听起来像您正在做的代码中进行过滤。这将减少在代码中处理此信息的开销,并且应该会更快。我还会在数据库中对这些结果的 UNION 进行排序,并避免在代码中进行。

编辑

为了完全清楚,这应该处理数据库中的排序:

SELECT tbl* FROM (
SELECT * phpvms_schedules
WHERE code = 'FE'
AND locate(dayofweek(convert_tz(now(),'+1:00','+0:00'))-1,
".TABLE_PREFIX."schedules.daysofweek)>0
AND phpvms_schedules.enabled = '1'
ORDER BY deptime ASC
LIMIT 15
UNION ALL
SELECT * phpvms_schedules
WHERE code = 'FE'
AND locate(dayofweek(convert_tz(now(),'+1:00','+0:00'))-1,
".TABLE_PREFIX."schedules.daysofweek)<0
AND phpvms_schedules.enabled = '1'
ORDER BY deptime DESC
LIMIT 4
) as tbl ORDER BY tbl.deptime ASC

关于php - 当前时间之前的缓慢查询和返回时间,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14607541/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com