See the Elephant

1992生まれのプログラマが書くエンジニアブログ

mysqlで検索結果のカラム値を変数にキャッシュする

> SELECT @min_user_id := `id` FROM users ORDER BY id DESC LIMIT 1000;

これで @min_user_id に検索結果がキャッシュされる。

select 
 @cache1 = case when ...end, -- int
 @cache2 =  case when ...end, -- int
 @cache1 * @cache2 as calc
from hoge

キャッシュした値でもって計算したいときに便利っぽい。 これがないとサブクエリで倒さないといけなかったのでちょっとだけ便利かも。

以下みたいな冗長なクエリじゃなくなる。

select 
 cache1 * cache2 as calc
from (select 
 case when ...end as cache1, -- int
 case when ...end as cache2, -- int
from hoge) as tmp