J'ai testé la requête suivante dans 2 bases de données avec exactement la même structure, dans la première, avec des entrées 4M, elle m'a renvoyé le résultat en 33 secondes. La deuxième table a 29M lignes et cela fait 16 heures que j'ai exécuté la requête et je n'ai pas encore de retour.Optimisation de requête
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;
Que puis-je faire pour exécuter cette requête plus rapide?
Est-il probable que la table soit corrompue ou quelque chose comme ça? Une table est seulement 7 ~ 8 fois plus grande que l'autre, mais cela prend 15000x plus de temps à traiter, est-ce normal?
Tous les autres commentaires sont les bienvenus!
Si mon anglais n'est pas clair, faites-moi savoir que je vais essayer de m'exprimer d'une manière différente.
Merci beaucoup pour toute aide,
INFO ADDITIONNELLE:
à partir des variables que j'utilise, trois d'entre eux sont des indices: id_hand, id_player position. La clé primaire est (id_hand, id_player). La table a 129 colonnes et 6 index au total.
J'ai aussi couru EXPLAIN dans les deux tableaux et j'ai obtenu des résultats différents. Les deux résultats sont sur une feuille de GDocs: https://spreadsheets.google.com/ccc?key=tGxqxVNzHYznb1VVjtKyAuw&authkey=CJ-BiYkN&authkey=CJ-BiYkN#gid=0
Sans aucune idée de votre modèle de données et les index, il est presque impossible de vous aider. Pourriez-vous également nous montrer le résultat d'EXPLAIN? –
Frank, quand j'arriverai à la maison, je recevrai cette information et je la posterai. Merci. – joaoavf
Faites-vous de l'aspirateur régulier sur cette table? –