PDA

Pogčedajte punu verziju : MySQL optimizacija


bluesman
27. 02. 2009., 00:17
Čitam neki PDF "MySQL Performance Cookbook" koji je izdao O'Reilly, pa sam našao neke stvari koje mi deluju čudno.

Na primer, dao je naslov sekciji "Manual joins" i kaže ovako:

Umesto:
SELECT * FROM A,B WHERE A.BID=B.ID AND A.C=5

Brže je sa 2 querija:
SELECT * FROM A WHERE A.C=5
SELECT * FROM B WHERE B.ID IN (<List of retrieved values>)

I objašnjava: Can be faster as each row from B is retrieved once, and because IN list will be sorted for optimal retrieval.

Zar ne bi trebao mysql da optimizuje prvi query i da ga izvrši u najmanju ruku istom brzinom kao ova 2 querija?

Samo da napomenem da je autor Peter Zaitsev koji je navodno radio 4,5 godine u MySQL AB kao manager u high performance group i performance related support.

cvele
27. 02. 2009., 09:11
iskreno i meni je prilicno cudan taj savet, jedino sto mogu logicki da zakljucim jeste da ce se query "SELECT * FROM B WHERE B.ID IN (<List of retrieved values>)" kesirati u celosti dok "SELECT * FROM A,B WHERE A.BID=B.ID AND A.C=5" nece, kada bi mysql imao prave bindove bila bi druga prica.

ivanhoe
27. 02. 2009., 15:47
Ako Peter Zaitsev to kaze onda je to sigurno tako, on je zaista jako dobar poznavalac materije...

Doduse, mozda se to odnosilo i na neke starije verzije mysql-a, moguce da tad nije radila optimizacija, pa su je posle sredili ili tako nesto...