Ich habe die folgende Abfrage in 2 Datenbanken mit genau der gleichen Struktur getestet, in der ersten, mit 4M Einträge hat es mir das Ergebnis in 33 Sekunden zurückgegeben. Die zweite Tabelle hat 29 Millionen Zeilen und es sind 16 Stunden vergangen, seit ich die Abfrage ausgeführt habe, und ich habe noch keine Rückkehr erhalten.Abfrage Optimierung
SELECT sbvpip*4 as smallbvpip,btnvpip*4 as buttonvpip, sum(amt_won)*400/count(*) AS winrate, count(*) as count
FROM holdem_hand_player_statistics
JOIN (
SELECT id_player AS pid2, id_hand AS hid, sbvpip
FROM holdem_hand_player_statistics
JOIN (
SELECT id_player AS pid, ROUND(avg(flg_vpip::int)*25) AS sbvpip
FROM holdem_hand_player_statistics
WHERE position = 8 AND cnt_players = 6
GROUP BY id_player
) AS auxtable
ON pid = id_player
WHERE position = 8 AND cnt_players = 6
) AS auxtable2
ON hid = id_hand
JOIN (
SELECT id_player AS pid4, id_hand AS hid2, btnvpip
FROM holdem_hand_player_statistics
JOIN (
SELECT id_player AS pid3, ROUND(avg(flg_vpip::int)*25) AS btnvpip
FROM holdem_hand_player_statistics
WHERE position = 0 AND cnt_players = 6
GROUP BY id_player
) AS auxtable3
ON pid3 = id_player
WHERE position = 0 AND cnt_players = 6
) AS auxtable4
ON hid2 = id_hand
WHERE POSITION = 0 and cnt_players = 6
GROUP BY sbvpip,btnvpip
ORDER BY 1,2;
Was kann ich diese Abfrage schneller machen ausführen?
Ist es wahrscheinlich, dass die Tabelle beschädigt ist oder so? Eine Tabelle ist nur 7 ~ 8 mal größer als die andere, aber es dauert 15000x mehr Zeit zu verarbeiten, ist das normal?
Alle anderen Kommentare sind willkommen!
Wenn mein Englisch nicht klar ist, lass es mich wissen, dass ich versuchen werde, mich auf eine andere Weise auszudrücken.
Vielen Dank für jede Hilfe,
ZUSÄTZLICHE INFORMATIONEN:
Aus den Variablen, die ich verwende, 3 von ihnen sind Indizes: id_hand, id_player, Position. Der Primärschlüssel ist (id_hand, id_player). Die Tabelle hat insgesamt 129 Spalten und 6 Indizes.
Ich lief auch EXPLAIN in beiden Tabellen und ich habe unterschiedliche Ergebnisse. Sowohl die Ergebnisse sind auf einer gdocs Tabelle: https://spreadsheets.google.com/ccc?key=tGxqxVNzHYznb1VVjtKyAuw&authkey=CJ-BiYkN&authkey=CJ-BiYkN#gid=0
Ohne jede Vorstellung über Ihr Datenmodell und Indizes, dann ist es fast unmöglich, Ihnen zu helfen. Könnten Sie uns auch das Ergebnis von EXPLAIN zeigen? –
Frank, wenn ich nach Hause komme, bekomme ich diese Informationen und poste sie. Vielen Dank. – joaoavf
Machst du regelmäßig Vakuum auf diesem Tisch? –