Ich habe mehrere Tabellen, die eine Rückerstattungsanforderung von seiner Kalkulationsphase bis zu seiner Rechnungsstellung verfolgen, Aufzeichnung von Werbebuchungen und deren Werte in jeder Phase der Anfrage.Vereinfachen Sie die Summe der Summe Abfragen in Mysql
Um die Summen für jede Spesenkategorie in jeder Phase zu erhalten, summierte ich sie mit einer Auswahl - was ich nicht herausfinden konnte, ist eine effiziente Möglichkeit, ihre Gesamtsummen für die gesamte Phase zu summieren, ohne eine andere zu tun Summenanforderung Da dies Hunderttausende Zeilen abfragt, leidet die Reaktionszeit. Die aktuelle Methode dauert knapp 4,59 Sekunden - während, wenn ich die Gesamtsumme Summen entfernen dauert es 4,02 Sekunden - einen Rat, wie die ursprünglichen Summen an Alias eine Gesamtsumme zu erhalten wäre höchst willkommen sein:
SELECT p.program_name, p.id as program_id, p.entity_id, a.id as account_id,
(SELECT COALESCE(SUM(amount),0) FROM cost_items c WHERE expense_category_id = 9 and c.account_id = a.id) as NIPLoanCost,
(SELECT COALESCE(SUM(amount),0) FROM cost_items c WHERE expense_category_id = 2 and c.account_id = a.id) as AcquisitionCost,
(SELECT COALESCE(SUM(amount),0) FROM cost_items c WHERE expense_category_id = 3 and c.account_id = a.id) as PreDemoCost,
(SELECT COALESCE(SUM(amount),0) FROM cost_items c WHERE expense_category_id = 4 and c.account_id = a.id) as DemolitionCost,
(SELECT COALESCE(SUM(amount),0) FROM cost_items c WHERE expense_category_id = 5 and c.account_id = a.id) as GreeningCost,
(SELECT COALESCE(SUM(amount),0) FROM cost_items c WHERE expense_category_id = 6 and c.account_id = a.id) as MaintenanceCost,
(SELECT COALESCE(SUM(amount),0) FROM cost_items c WHERE expense_category_id = 7 and c.account_id = a.id) as AdministrationCost,
(SELECT COALESCE(SUM(amount),0) FROM cost_items c WHERE expense_category_id = 8 and c.account_id = a.id) as OtherCost,
(SELECT COALESCE(SUM(amount),0) FROM cost_items c WHERE c.account_id = a.id)
as TotalCost,
/* I have removed the other 4 table's requests that follow this same methodology */
FROM programs p, accounts a WHERE p.entity_id = a.entity_id;
Was ist die Beziehung zwischen 'a.entity_id' und' a.id'? –
Entität (Entitäts-ID) ist die Organisation, der das Konto (a.id) gehört, zu dem die Elemente gehören. Eine Entität kann viele Konten besitzen, aber ein Konto kann nur eine Einheit haben. –
Ich habe Ihnen unten eine Antwort gegeben, die Sie vielleicht etwas ändern müssen. –