データベースから写真のあるランダムな記事を抽出しようとしています。
SELECT FLOOR(MAX(id) * RAND()) FROM `table` WHERE `picture` IS NOT NULL
私のテーブルは 33 MB の大きさで、1,006,394 個の記事がありますが、写真付きの記事は 816 個しかありません。私の問題は、このクエリに 0.4640 秒かかることです
これをもっと速くする必要があります。どんなアイデアでも大歓迎です。
PS 1.もちろん、idにインデックスがあります。2. ピクチャ フィールドにインデックスがありません。追加する必要がありますか?3. 商品名も商品番号もユニークですが、それは論外です。
テストセッションの結果。
@cHaoのソリューションは、画像付きのランダムなエントリの 1 つを選択するために使用すると高速になります (0.1 秒未満です。しかし、反対のことをしようとすると、画像なしでランダムな記事を選択すると遅くなります。2.. 3秒
@Kickstartのソリューションは、画像のあるエントリを検索しようとすると少し遅くなりますが、画像のないエントリを検索しようとするとほぼ同じ速度になります。平均0.149秒。
@ bob-kruithofの解決策は私にはうまくいきません。画像のあるエントリを検索しようとすると、画像のないエントリが選択されます。
そして@ganesh-bora、そうです、私の場合、速度の違いは約5..15倍です。
皆さんのご協力に感謝したいので、@Kickstart に決めました。