やりたいことは重複なしでランダムで3銘柄IDを抽出したい。fund_idじゃなくidはプライマリーキーです。
fund_idは重複している。データ全部で280万くらい。
id | fund_id | as_of_date | value |
---|---|---|---|
1 | 529 | 20111130 | 5394 |
2 | 529 | 20111129 | 5384 |
3 | 529 | 20111128 | 5323 |
4 | 529 | 20111125 | 5312 |
5 | 529 | 20111124 | 5312 |
6 | 529 | 20111122 | 5366 |
7 | 529 | 20111121 | 5397 |
8 | 545 | 20111129 | 5374 |
9 | 545 | 20111128 | 5373 |
10 | 545 | 20111125 | 5372 |
11 | 545 | 20111124 | 5312 |
12 | 545 | 20111122 | 5376 |
13 | 545 | 20111121 | 5377 |
... | ... | ... | ... |
mysqlのorder by rand()を使ったが、凄く遅い!なんと1分もかかります。
sql> select distinct fund_id from fund_indices order by rand() limit 3;
fund_idを絞るサブクエリを入れると凄く早くなった
sql> select fund_id from (select distinct fund_id from fund_indices) order by rand() limit 3;
表示中の列 0 - 2 (~31 合計, クエリの実行時間 0.0495 秒)
0 件のコメント:
コメントを投稿