0

重複の可能性:
MySQLは600K行からランダムな10行を高速で選択します

ウェブ上にはさまざまな例がありますが、誰かが私が探しているものに合う解決策を持っていることを望んでいます...確かに私だけではありません!

写真のウェブサイトを構築していて、ランディングページに50以上の画像サムネイルを表示したいと思います。キッカーは、PHPを使用して、重複することなくランダムに画像を表示したいということです。また、各画像に独自の一意のhrefおよびtitleパラメータを持たせたいです。

そこで、以下を保持するmySQLテーブルを作成しました。

id image_path, image_href, image_title

画像のサイズを自分で簡単に変更し、ルートディレクトリのフォルダに入れて、画像の行image_pathで呼び出すことができると考えていました。

誰かがこれを最も効率的な方法で行う方法を知っていますか?データベースが大きくなると、rand()はダメだと聞きました。データベースは数万の画像に成長します。

説明が必要/必要な場合はお知らせください。

ありがとう!!!

編集:私は私の研究で答えに出くわしたかもしれませんが、私はPHPにかなり慣れていません... :)

4

1 に答える 1

7

データベースにクエリを実行し、結果を並べ替えてRAND()、上位50を選択できます。

SELECT id, image_path, image_href, image_title 
FROM table 
ORDER BY RAND()
LIMIT 50

これにより、テーブル自体に重複がない限り、重複する結果がないことが保証されます。

この質問では、より高速な方法の概要を説明します。MySQLは600K行からランダムな10行を高速で選択します

于 2012-12-13T23:17:03.683 に答える