Ich habe eine Situation, die ich unter Abfrage verwendet haben, um die Verwendung bestimmter Benutzer in den Ruhestand, aber das Problem ist, dass jetzt mysql alle Datensätze aus der Tabelle summiert. Anstatt die Summe aller Datensätze zu erhalten, will ich nur die Abfrage stoppen, wenn die Summe größer als 500 ist. Ich habe 3 verschiedene Wege gemeistert. Kann mir jemand vorschlagen, was der beste Weg ist, um das Ergebnis zu erreichen.mysql Abfrageoptimierung (mit Summenfunktion)
1. Versionsabfrage
SELECT
(SUM(radacct.acctinputoctets) + SUM(radacct.acctoutputoctets))/8388608 AS total_usage
FROM `radacct`
WHERE username ='fktmbishals'
2. Versionsabfrage
SELECT
if ((SUM(radacct.acctinputoctets) + SUM(radacct.acctoutputoctets))/8388608 > 500 , 500, 0) AS total_usage
FROM `radacct`
WHERE username ='fktmbishals'
3. Versionsabfrage
SELECT
(SUM(temp_radacct.acctinputoctets) + SUM(temp_radacct.acctoutputoctets))/8388608 AS total_usage
FROM (
SELECT
radacct.acctinputoctets,radacct.acctoutputoctets
FROM `radacct`
WHERE username ='fktmbishals'
LIMIT 10
) as temp_radacct
Wie viele Zeilen sind in der Tabelle für diesen Benutzer? –
@PaulSpiegel Es gibt mehr als 10,00000 Datensätze – Dipen
alle Ihre Abfragen machen etwas anderes .... lassen Sie uns wissen, was Sie wollen .... möglicherweise gibt es bessere Option als Sie versucht haben. –