MySQL: počasen NOT IN query
 
fatg 12. okt 2010 15:18:01 Pridružen od:
28. jan 2008
94 objav
73 2 0
#11

Prepiši na LEFT JOIN, mislim, da bi šlo. Subqueryji so pri MySQLu strahotno počasni, majo polno ticketov odprtih na to temo. :)


všeč(0) ni všeč(0) spam(0)
 
inkanet 12. okt 2010 16:58:58 Pridružen od:
3. okt 2008
328 objav
110 1 2
#12

Mislim da "name" ne rabi indexa, prej ga rabita "id" iz Products in "type" ter "date" iz visitstat.


všeč(0) ni všeč(0) spam(0)
 
kelvan 12. okt 2010 21:32:23 Pridružen od:
19. okt 2007
891 objav
658 122 26
#13

kot je ze omenil blackmamba, vcasih se bolj splaca narediti dva querya :)

na strani imamo 200k+ slik in pri listanju galerij se je izkazalo za manj pozresno, ce na zacetku nafilam counte in idje slik, kot pa da bi jih iskal sproti v kaksnih joinih ali subqueryih


všeč(0) ni všeč(0) spam(0)
 
ledi 13. okt 2010 05:24:22 Pridružen od:
14. avg 2008
681 objav
325 223 14
#14

kelvan:

kot je ze omenil blackmamba, vcasih se bolj splaca narediti dva querya :)

na strani imamo 200k+ slik in pri listanju galerij se je izkazalo za manj pozresno, ce na zacetku nafilam counte in idje slik, kot pa da bi jih iskal sproti v kaksnih joinih ali subqueryih




V takem primeru ko računaš neko statistiko in ne rabi biti vsak query up to date pridejo zelo dobro tudi materialized view v uporabo :)


všeč(0) ni všeč(0) spam(0)
 
SlimDeluxe 13. okt 2010 07:23:34 Pridružen od:
29. apr 2010
1223 objav
1022 144 9
#15

Evo ozko grlo je bilo z vašo pomočjo najdeno :)


ALTER TABLE visitstat ADD INDEX ref_id (refId);

In zdaj:


SELECT id, name FROM Product WHERE id NOT IN (SELECT DISTINCT refId FROM visitstat WHERE type='P' AND date > '2010-10-02') ORDER BY name ASC LIMIT 100;

100 rows in set (0.07 sec)



Bom moral najti kakšno literaturo o MySQL, v stilu "best practices".


všeč(1) ni všeč(0) spam(0)
Freelance Web Developer
 
kelvan 13. okt 2010 13:12:15 Pridružen od:
19. okt 2007
891 objav
658 122 26
#16

yeah... indexi FTW


všeč(0) ni všeč(0) spam(0)
 
 

🔒 Za odgovor na to temo se moraš prijaviti.

Prijavi se