私は、約70列と120,000行のデータを持つテーブルを持っています。私がしたいのは、レコードをランダム化し、このレコードの他の列の値を表示することです。 私はすべてのデータをフェッチしない場合は、最初にクエリを実行し、次にランダム化し、残りのフィールドを取得します。
$result=mysqli_query($link, 'SELECT id, column1, column2, column3, ..., column 70 from table');
while ($row=mysqli_fetch_array($result))
{
$info[] = array('id'=>$row['id'], 'column1'=>$row['column1'], ...);
}
$randindex = rand(0,count($info));
$id = $info[$randindex]['id'];
echo $info[$randindex]['column1']; echo $info[$randindex]['column2']; ....
は、私は、これはかなり処理が遅くなることを恐れています。ですから、私はランダム化の前にIDだけを照会し、ランダム化されたIDを使用してデータベース内のそのレコードの他の値を検索したいと思います。
$result=mysqli_query($link, 'SELECT id from table');
while ($row=mysqli_fetch_array($result))
{
$info[] = $row['id'];
}
$randindex = rand(0,count($info));
$id = $info[$randindex];
この特定のレコードの他のすべてのフィールドを何とか取得します。私はSQL hereでこれを行う方法を尋ねましたが、SQL以外の他の手段で効率的な方法があるかどうかを知りたいと思います。 thisのようなループをする必要がありますか?あなたのコードで
自分でデータベースよりも優れた処理をしたいのですが。あなたは一度にすべての列を必要としないで、代わりに2つのクエリを実行する特別な理由はありますか? – FirstOne