試してみてください。テーブル データが大きすぎる場合は、ORDER BY RAND() を使用することはお勧めできません。まず SQL を試してください。彼らは働いています。これがお役に立てば幸いです。
SELET `id`,`tid`,`subject`,`message`,`dateline` FROM `posts` WHERE `tid`=NULL ORDER BY `tid`,`dateline`
SELET `id`,`tid`,`subject`,`message`,`dateline` FROM `posts` WHERE `tid`=!NULL ORDER BY RAND() LIMIT 1
select t2.* from (select tid,max(dateline) maxDateline from 投稿グループ by tid order by maxDateline 記述制限 10)t1 内部結合 t2 を t1.tid=t2.tid および t1.maxDateline= に投稿しますt2.dateline
1 階の最初の文の目視検査は間違っています。異なるトピックが存在するという保証はありません。
実際には、dateline と id は同じ順序である必要があります。id の主キーをより効率的に変更することを検討できます。
2番目の文は、個人的にはORDER BY RAND()を使用しないほうが良いと思います。このように書くと複数のスキャンが発生する可能性があるため、データ量が少し多くなる場合は非効率になるため、このように書くのが良いかもしれません。より良い:
試してみてください。テーブル データが大きすぎる場合は、
ORDER BY RAND()
を使用することはお勧めできません。まずSQL
を試してください。彼らは働いています。これがお役に立てば幸いです。上の階の最初の答えは、目視によると正しくありません。以下は私の個人的な意見です。