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 回実行していますが、最初の結果を保存し、それ以降はその結果を使用したいと考えています。これにより、クエリのパフォーマンスが向上しますか? クエリは、スクリプトで何千回も呼び出されます。(mySQL の代わりに PHP で関数を実行すると、上記の現在のクエリと速度に大きな違いはありません。)

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 に答える