2

我正在运行这个查询(通过 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 中执行函数时,与上面的当前查询相比,速度没有太大差异。)

4

1 回答 1

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

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

于 2012-06-12T08:52:07.247 回答