MySQL でランダムかつ高速にレコードを取得する方法

ORDER BY RAND() を利用すればランダムに行数を取得できるが、
対象のテーブルのレコード数が数千件となると1,2秒かかるため、
そのままでは利用しにくい。

そこで、goods_id というPKの1桁目と、
0~9のランダム整数を比較し
一致したレコードに対して
order by RAND()
LIMIT 0, 10
と取得することで比較的高速にランダムにレコードを取得することができた。
(手元の環境では クエリの実行時間 0.0200 秒)

データ数によって 0~9 を 0~100 にすることもできるので、
汎用性が高い方法かもしれない。

[SQL例]
select g.goods_id,g.regist_date,g.update_date,g.item_id,g.cat_name,g.maker_name,g.item_cd,g.item_name,g.exp,g.exp_dtl,g.exp_dtl_html,g.oro_price,g.cell_price,g.maker_price,g.image_url1,g.image_url2,g.image_url3,g.dtl_url,g.cart_url
from goods g
where g.goods_id MOD 10 = ROUND(RAND(10)*10) AND
cat_name = 'PC・家電・CD・DVD'
order by RAND()
LIMIT 0 , 10