我有一個包含約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