Je question au sujet de cette requête, un peu plus lent pour moi :(recherche lente de minimum dans la liste des valeurs maximales avec sql avec clause
Mon problème: Je cherche le minimum tiques dans une liste qui contient . chaque maximum de chaque liste de tiques par graines
=> égal à min (max (seed1), max (seed2), max (3 graines), etc.)
PS: chaque graine contient ~ 10 000 rows (1 row = 1 ticks) PS2: J'ai une table contenant toutes les données (ce n'est pas une bonne solution, je sais, mais je n'ai pas le choix en ce moment de mon projet.) La simulation contient des millions de lignes, hum .. comme 40 M:/ PS3: J'avais index sur v_seed et v_exp.
temps pour exécuter cette requête est ~ 135 secondes, il est très lent :(
WITH summary AS (SELECT v_ticks,v_seed, ROW_NUMBER() OVER(PARTITION BY v_seed ORDER BY v_ticks DESC) as rk FROM simulations WHERE v_exp=23 AND v_seed IN (2133836778, -2061794068, 1260042744, -1324330098, -423279216, -685846464, 142959438, -1154715079, 1062336798,-624140595, -922352011, -613647601, -330177159, 1945002173, 131053356, -216538235, -636982783, 979930868, 321237028, -1103129161, 476235295, -1916604834, -54027108, 17850135, -60658084)) SELECT min(s.v_ticks) FROM summary s WHERE s.rk = 1
MISE À JOUR 1: EXPLIQUER INFORMATIONS
Aggregate (cost=6327697.46..6327697.47 rows=1 width=4)
CTE summary
-> WindowAgg (cost=5302458.61..5784782.09 rows=24116174 width=12)
-> Sort (cost=5302458.61..5362749.05 rows=24116174 width=12)
Sort Key: simulations.v_seed, simulations.v_ticks
-> Bitmap Heap Scan on simulations (cost=415238.16..1933251.42 rows=24116174 width=12)
Recheck Cond: (v_seed = ANY ('{2133836778,-2061794068,1260042744,-1324330098,-423279216,-685846464,142959438,-1154715079,1062336798,-624140595,-922352011,-613647601,-330177159,1945002173,131053356,-216538235,-636982783,979930868,321237028,-1103129161,476235295,-1916604834,-54027108,17850135,-60658084}'::bigint[]))
Filter: (v_exp = 23)"
-> Bitmap Index Scan on index_seed (cost=0.00..409209.12 rows=25752303 width=0)
Index Cond: (v_seed = ANY ('{2133836778,-2061794068,1260042744,-1324330098,-423279216,-685846464,142959438,-1154715079,1062336798,-624140595,-922352011,-613647601,-330177159,1945002173,131053356,-216538235,-636982783,979930868,321237028,-1103129161,476235295,-1916604834,-54027108,17850135,-60658084}'::bigint[]))
-> CTE Scan on summary s (cost=0.00..542613.92 rows=120581 width=4)
Filter: (rk = 1)
Si vous avez une idée d'optimiser cette requête, c'est cool :) Thx!
Est-ce que les simulations ont un index clusterisé? –
Que dit le planificateur de requêtes? – vol7ron
Aucun index clusterisé, seul index simple sur colum v_seed et v_xp – reyman64