使用函数优化mySQL查询

时间:2012-06-12 08:35:07

标签: 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

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

1 个答案:

答案 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

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