Ich habe eine Tabelle mit etwa 70 Spalten und 120.000 Zeilen von Daten. Ich möchte einen Datensatz randomisieren und dann die Werte anderer Spalten dieses Datensatzes anzeigen. Wenn ich alle Daten noch holen,Abfrage zuerst, dann randomize, und dann die restlichen Felder abrufen
$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']; ....
Ich fürchte, dass dies den Prozess erheblich verlangsamen. Daher möchte ich nur die ID vor der Randomisierung abfragen und dann die randomisierte ID verwenden, um die anderen Werte dieses Datensatzes in der Datenbank abzurufen.
$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];
und dann alle anderen Felder dieses bestimmten Datensatzes irgendwie abrufen. Ich fragte, wie dies in SQL here zu tun ist, aber ich würde gerne wissen, ob es einen anderen effizienten Weg mit anderen Mitteln als SQL gibt. Muss ich eine Schleife wie this machen?
Sie möchten etwas selbst besser als die Datenbank tun .. hmm. Gibt es einen besonderen Grund dafür, dass Sie nicht alle Spalten gleichzeitig haben wollen, sondern stattdessen 2 Abfragen ausführen? – FirstOne