Portál AbcLinuxu, 10. května 2025 13:46

Dotaz: MySQL: pohledy a optimalizace

1.11.2008 14:19 Eregon | skóre: 22 | blog: Eregonovy_vymysly | Všudezdejší
MySQL: pohledy a optimalizace
Přečteno: 677×
Odpovědět | Admin
ahoj vsem, potreboval bych se ujistit, ze spravne chapu jednu drobnost kolem pohledu.

Mam pohled, ktery vybira data z nekolika tabulek, pricemz nektere ze sloupcu toho pohledu jsou resene jako pomerne slozite poddotazy.

Je spravny predpoklad, ze kdyz udelam select jen nekterych sloupcu v tom pohledu, nebude se databaze temi nezobrazovanymi zdrzovat?
~ w w w w (oo)   [oo] w w w w ~
Nástroje: Začni sledovat (1) ?Zašle upozornění na váš email při vložení nového komentáře.

Odpovědi

1.11.2008 22:35 cronin | skóre: 49
Rozbalit Rozbalit vše Re: MySQL: pohledy a optimalizace
Odpovědět | | Sbalit | Link | Blokovat | Admin
Nie, tento predpoklad nie je spravny. Pohlad nie je nic ine ako "zapamatany select"; mozes ho chapat ako makro, ktore sluzi na zjednodusenie konecneho selektu, ktory vykonavas nad pohladom.
4.11.2008 09:15 Tomas
Rozbalit Rozbalit vše Re: MySQL: pohledy a optimalizace
Odpovědět | | Sbalit | Link | Blokovat | Admin
Záleží na databázi a na dotazu. Musíte si v prvé řadě uvědomit, že podotaz, který nějak JOINnujete může vytvářet omezení/nafouknutí výsledné množiny záznamů. Podmínky, kdy je možno JOIN (a celý poddotaz) vyhodit jsou dost složité a velmi záleží na tom jak si s tím optimizér poradí. Ale z 99% to dopadne tak jak bylo již někdo napsal přede mnou tj. vyhodnotí se i poddotaz. Jeden příklad za všechny, který ukazuje případ, kdy je možno celý JOIN (poddotaz s B) při vyhodnocování přeskočit:
select 
  A.neco
from A
left join 
 ( select B.c , ... /* agregát nad c */
   from B
   group by c /* vytvorime PK nad D */
 ) as D
on A.c=D.c

P.S. Vnořené dotazy v klauzuli SELECT jsou taky JOINy. Jenom jinak zapsané.

Založit nové vláknoNahoru

Tiskni Sdílej: Linkuj Jaggni to Vybrali.sme.sk Google Del.icio.us Facebook

ISSN 1214-1267, (c) 1999-2007 Stickfish s.r.o.