1

こんにちは、みんな、

私はウェブサイトを所有しています。「モバイルセクション」というセクションがあります。このセクションには多くのカテゴリが含まれています(オブジェクトの名前+画像+簡単な説明とダウンロードリンク)。このセクションは内部セクションと見なされます。最初のページのそのセクションからランダムなレコードを表示したい(RSSのようにはわかりませんが、Rssはわかりません)。オブジェクトの名前、オブジェクトが属するサブカテゴリ、および可能であればその画像を示します。私が言おうとしていることを誰かが理解してくれることを願っています。

これは私のウェブサイトです。これは内部ページのリンクですモバイルセクションと書かれているブロックを確認してください。適切な方法で表示するためのスクリプトや技術はありますか?可能であれば例を示してください

私はphpとMySQLを使用しています

よろしくお願いします

4

3 に答える 3

2

何をするにしても、MySQLではORDER BY RAND()を使用しないでください。スケーリングしません。はい、データセットが小さいため、少数の行で正常に機能するように見えます。ORDER BY RAND()には全表スキャンが必要です。つまり、テーブルが大きいほど、クエリにかかる時間が長くなります。これは、「ねえ、ウェブサイトは遅いようだ」のように現れます...そして遅い...そして遅い...

たまたま整数で主キーとして機能するid列がある場合は、実際にインデックスを使用しているため、クエリを実行する前にPHPで最大値を生成できます。

例は次のようになります。

$random_row_id = rand(1, $max);

その後...

SELECT * FROM foo WHERE id = $random_row_id

$ maxを取得する方法を理解する必要がありますが、ほとんどの場合、最後の行IDを取得するだけです。

ここで注意すべきことは、テーブルからレコードを削除すると、もう存在しない行を要求する可能性のある「穴」ができるということです。この場合、一致するものが見つかるまでプロービングを続けることができます。それでも、全表スキャンよりもはるかに高速です。

于 2009-01-10T21:27:29.817 に答える
0

このアイデアは、デビッド・トーマス・ガルシアから盗んだようなものです。あなたができることは、製品のビューを追跡するフィールドをデータベースに実装することです(または、これを避けて購入を追跡することもできます)。データベースからアイテムを「トップセラー」または「ホット」として選択できます製品」を選択して、サイトに表示します。

于 2009-01-10T18:43:53.173 に答える
-2

本当にランダムにしたいですか?ホームページで最も人気があり、訪問者にとってより便利で有益なものになるかもしれません.

そうは言っても、そのために Microsoft SQL でメソッドを作成するのは非常に簡単です。

SELECT TOP 1 Name, Picture, Description, Link
FROM Software
WHERE Category = 'Mobile Section'
ORDER BY NEWID()

Microsoft SQL を使用していない場合は、多くのデータベースのランダム セレクターを備えたサイトをご覧ください。

于 2009-01-10T16:25:49.457 に答える