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

标签 php mysql

我的网站加载速度非常慢,只有一个页面加载速度慢,我怀疑这是因为向数据库发送了 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/

相关文章:

php - 警告 1264 超出为列(日期时间列)调整的值范围

php - 使用 $_POST 将数据插入数据库时​​出现错误

mysql - Java、Tomcat、MySQL 组合的安装程序

php - LEMP + WordPress 设置失败

php - HipHop PHP 将其转换为 C++ 后,关联数组是什么样子的?

php - 使用php读取Json数据响应

JavaScript 更改提交表单上的输入样式

Mysql更新与if语句

php - 每次部署后 Amazon EC2 Linux PHP 速度都会变慢

php - 从任何文件夹启动 php web 服务器