2016-07-13 6 views
0

Ich habe eine separate Tabelle (ohne PK, nur eine Zeile), um die Zeilenanzahl eines bestimmten Ergebnisses zu speichern. Nun wird diese Zählung in einer Abfrage wie folgt aus (nur ein Beispiel) verwendet:Werden Unterauswahlen in Where-Klauseln mehrmals oder nur einmal ausgeführt?

SELECT * FROM `car` 
WHERE `car`.`featured` = 1 
AND (SELECT `count` FROM `carfeaturedcounter`) > 5; 

Wird SELECT count FROM carfeaturedcounter (für jede Zeile einmal) ausgeführt werden mehrmals oder nur einmal pro Abfrage?

+0

Nur einmal. Unterabfragen sind ineffizient, aber nicht so ineffizient. – StormoPL

+0

@StormoPL Ja, ich dachte mir, dass es nicht super effizient sein wird, aber ich hoffe effizienter als jedesmal ein COUNT() zu verwenden - besonders später, wenn es viele Einträge gibt :) – Katai

+0

Ich kenne Ihre db-Struktur nicht aber ich denke, die richtige Herangehensweise an diese Art von Thema wäre durch die Option HAVING, während Sie car_features zu Auto, GROUP BY car_id und COUNT car_features beitreten. Einen separaten Tisch nur für den Tresen zu haben ist etwas unorthodox. – StormoPL

Antwort

0

Ich denke, es hängt von der Version von MySQL ab. Sie können die Bedingung auch in die from-Klausel verschieben, in der sie nur einmal ausgeführt wird:

Verwandte Themen