dak ブログ

python、rubyなどのプログラミング、MySQL、サーバーの設定などの備忘録。レゴの写真も。

MySQLでランダムにレコードを検索する方法

2021-04-29 01:37:59 | mysql
MySQLでランダムにレコードを検索する方法のメモ。

MySQLでランダムにレコードを検索するには order by rand() を指定します。
例えばランダムにレコードを10件取得するには以下のような select 文になります。

■方法1
select
	*
from
	table
order by
	rand()
limit 10
;

乱数をあらかじめレコードに付与しておくことで、ランダムにレコードを選択することもできます。

■方法2
create table rand (
	id	varchar(100),
	r	float,
	primary key(id),
	index (r)
);

select
        id
from
        rand
where
        r >= rand()
order by
        r asc
limit 10
;

10万件のレコードを登録しておいて、方法1と方法2の実行時間を調べたところ、
方法1は0.06秒、方法2は0.00秒という結果になりました。

この記事についてブログを書く
« nmslib でインデックスを生成... | トップ | MySQL で delete 中に select... »

mysql」カテゴリの最新記事