我正在运行此查询(通过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
正如您所看到的,我正在执行date(date_time)
函数5次,但希望存储第一个结果并从那时起使用该结果。这会提高查询的性能吗?在脚本中调用该查询数千次。 (当我在PHP而不是mySQL中执行函数时,我的速度与上面的当前查询没有太大区别。)
答案 0 :(得分:0)
您是否尝试过SQL variables
?
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
但我不确定这是否适合你。