SQL baze podataka - Sponzor: Baze-Podataka.net MySQL, MSSQL, Oracle, Access, ODBC. Ako imate problem brže i preciznije ćete dobiti odgovor ako priložite strukturu tabela ili skript koji kreira tabele i puni ih test podacima umesto što to problem opisujete samo rečima. Sponzor: Baze-Podataka.net - Blog o bazama podataka |
|
Alati teme | Način prikaza |
15. 10. 2009. | #1 |
Goran Pilipović
Sir Write-a-Lot
|
Šta je brže?
Znam da ima ljudi koji vole da benchmark-uju MySQL, ja imam jedan praktičan problem i treba da donesem odluku. Ako imamo jednu tabelu users u kojoj imam klasicna polja:
user_id username ... country I u njoj ima 2 miliona records, od kojih treba da izvucem na primer sve kojima je country='RS' (KEY). Recimo da ima 120.000 records Tražimo klasično: SELECT ... WHERE country='RS' ... Međutim na 2M records ovo WHERE mi bode oči jer treba da bude što je moguće brže. Pade mi na pamet da je možda brže ako izbegnem WHERE pa da pored ove imam tabelu sa jednim poljem: create table users_rs ( user_id INT ... primary key (user_id) ); U kojoj su samo tih 120.000 koji si iz RS, i onda radimo ovako: SELECT ... FROM users_rs LEFT JOIN users USING (user_id) Pošto u tom select-u nema WHERE i ima manje recorda, da li neko misli da je to brže ili je samo wishfull thinking?
__________________
Goran Pilipović a.k.a. Ugly Fingers Bradley f.k.a. bluesman I don't always know what I'm talking about but I know I'm right! |
|
|