我正在运行此查询(通过 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/