Heim > Backend-Entwicklung > PHP-Tutorial > Wie kann ich MySQL-Abfragen „WHERE ... IN(...)' mithilfe von Arrays und vorbereiteten Anweisungen optimieren?

Wie kann ich MySQL-Abfragen „WHERE ... IN(...)' mithilfe von Arrays und vorbereiteten Anweisungen optimieren?

DDD
Freigeben: 2024-12-16 06:53:11
Original
722 Leute haben es durchsucht

How Can I Optimize MySQL

Verwendung von Arrays in MySQL-vorbereiteten Anweisungen für „WHERE ... IN(...)“-Abfragen

In Datenbankabfragen die Verwendung von IN -Anweisungen können die Leistung optimieren, indem sie die Anzahl der Aufrufe der Datenbank reduzieren. Dies ist besonders nützlich, wenn Sie mit großen Datensätzen arbeiten. Stellen Sie sich eine Abfrage wie diese vor:

SELECT * FROM somewhere WHERE `id` IN(1,5,18,25) ORDER BY `name`;
Nach dem Login kopieren

Wenn Sie ein Array von IDs abrufen müssen, z. B. $ids = array(1,5,18,25), könnten Sie die Verwendung vorbereiteter Anweisungen in Betracht ziehen. Vorbereitete Anweisungen verhindern SQL-Injection-Angriffe und verbessern die Leistung. Hier ist ein Beispiel für die Verwendung vorbereiteter Anweisungen mit einer einzelnen ID:

$stmt = $mysqli->prepare('SELECT * FROM somewhere WHERE `id`=?;');
foreach ($ids as $id){
    $stmt->bind_params('i', $id);
    $stmt->exec();
}
Nach dem Login kopieren

Dieser Ansatz würde jedoch eine manuelle Sortierung der Ergebnisse erfordern. Stattdessen können Sie eine effizientere Alternative verwenden, indem Sie eine Zeichenfolge mit Platzhaltern (?) erstellen und diese mithilfe der Funktion implode() durch Kommas trennen.

$clause = implode(',', array_fill(0, count($ids), '?'));
Nach dem Login kopieren

Bereiten Sie dann die Anweisung mit der Klausel vor und binden Sie sie das $ids-Array mit call_user_func_array().

$stmt = $mysqli->prepare('SELECT * FROM somewhere WHERE `id` IN (' . $clause . ') ORDER BY `name`;');
call_user_func_array(array($stmt, 'bind_param'), $ids);
$stmt->execute();
Nach dem Login kopieren

Dieser Ansatz ermöglicht es MySQL, die Sortierung effizient durchzuführen, was Ihnen Zeit und Zeit spart Aufwand.

Das obige ist der detaillierte Inhalt vonWie kann ich MySQL-Abfragen „WHERE ... IN(...)' mithilfe von Arrays und vorbereiteten Anweisungen optimieren?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage