mysql - 使用函数优化 mySQL 查询

标签 mysql

我正在运行此查询(通过 PHP)并想知道是否有更快的方法来获得相同的结果:

SELECT 
    date(date_time) as `date`, 
    unix_timestamp(date(date_time)) as `timestamp`, 
    month(date(date_time)) as `month`, 
    dayname(date(date_time)) as `dayname`, 
    dayofmonth(date(date_time)) as `daynum`, 
    hour(date_time) as `hour`, minute(date_time) as `increment`
FROM loc_data 
WHERE loc_id = 2

如您所见,我执行了 5 次 date(date_time) 函数,但我想存储第一次的结果并从那时起使用该结果。这会提高查询的性能吗?该查询在脚本中被调用了数千次。 (当我在 PHP 而不是 mySQL 中执行函数时,与上面的当前查询相比,速度没有太大差异。)

最佳答案

您是否尝试过使用 SQL 变量

select @a from (select @a := 1) a

这对你的查询有效

SELECT 
    @n as `date`, 
    unix_timestamp(@n) as `timestamp`
FROM loc_data l,
     (select @n := date(l.date_time)) a 
WHERE l.loc_id = 2

但我不确定这是否适合你。

关于mysql - 使用函数优化 mySQL 查询,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10993074/

相关文章:

MySQL轮询,结果错误

php - mysql_num_rows 无法正常工作

mysql - 向表中插入数据时出现 SQL 错误

mysql - Django ORM Join 语句

php - 如何将此查询保存到 Controller 并将模型保存到我的数据库

php - 组合框人口

MySQLNonTransientConnectionException : Communications link failure during commit(). 事务解析未知

MySQL 查询删除 ExpressionEngine 1.6.4 中的垃圾评论

带有发起者 ip 的 php curl post

mysql - where 子句中的列 'available_for_order' 不明确