Problem mit Group By Performance
- From: "Nikolaus D. Bayer" <nikolaus.bayer@xxxxxx>
- Date: 7 Feb 2006 03:21:16 -0800
Hallo,
folgende Abfrage bereitet mir Kummer:
SELECT
LEFT(TrmDateTime, 7) as "Month",
COUNT(*) AS "Transactions (Number)",
FORMAT(SUM(amount),2) AS "Transactions (EUR)",
COUNT(CASE WHEN matchesfraud = 1 THEN 1 ELSE null END) AS "Fraud
(Number)",
FORMAT(SUM(CASE WHEN matchesfraud = 1 THEN amount ELSE null END),2)
AS "Fraud (EUR)"
FROM
epfp2_all
GROUP BY LEFT(TrmDateTime, 7)
ORDER BY NULL;
efp2_all ist ein View auf mehrere Tabellen, in denen monatsweise
Transaktionen abgelegt sind. In jeder dieser Tabellen liegt ein Index
auf TrmDateTime (einer Datumsspalte). Insgesamt sind ca. 30 Millionen
Datensätze in diesen Tabellen.
Die Anzahl der Ergebniszeilen ist sechs, da nur sechs Monate
vorgehalten sind.
Nun geht meine Datenbank (MySQL 5.0.18 auf Windows XP, Single Opteron
2GHz, 3GB RAM) derart vor, daß es zunächst eine temporäre Tabelle
anlegt und dorthin eine Menge Daten kopiert. Das dauert natürlich
Ewigkeiten und ich bekam dann irgendwann eine Fehlermeldung, der Index
auf dieser temporären Tabelle sei kaputt.
Nun frage ich mich: Muß das sein? Eigentlich sollte ein einfacher
Table Scan doch ausreichen. Genau das machen nämlich Oracle und DB2
bei dieser Abfrage, das habe ich schon probiert. Gibt es eine
Möglichkeit meine obige Abfrage umzuformulieren, so daß ich mit einem
einfachen Tablescan und ohne die temporäre Tabelle auskomme?
Ach ja, was ich schon ausprobiert habe:
- Im View eine zusätzliche Spalte "Monat" mit Definition
LEFT(TrmDateTime, 7) angelegt und darüber gruppiert.
- Statt "LEFT(TrmDateTime, 7)" habe ich "DATE(TrmDateTime) verwendet
- SQL_SMALL_RESULT verwendet
.... allles ohne Erfolg.
Wer hat Ideen? Danke.
Grüße, Nikolaus
.
- Follow-Ups:
- Re: Problem mit Group By Performance
- From: Joachim Zobel
- Re: Problem mit Group By Performance
- From: Hartmut Holzgraefe
- Re: Problem mit Group By Performance
- From: Dirk Brosowski
- Re: Problem mit Group By Performance
- Prev by Date: Syntaxcheck für SQL-Scripts
- Next by Date: Re: Problem mit Group By Performance
- Previous by thread: Syntaxcheck für SQL-Scripts
- Next by thread: Re: Problem mit Group By Performance
- Index(es):
Relevant Pages
|