wydajnosc, podzapytania czy zapytania?
Maciek - 26-03-2007 00:01
wydajnosc, podzapytania czy zapytania?
witam. Co jest z zalozenia wydajniejsze (jesli chodzi o szybkosc dzialania): jedno zapytanie, ktore ma wiele podzapytan do roznych tabel, czesto operujace na wielu tabelach, ktore wyliczaja dla danego wiersza z glownego zapytania odpowiednie wartosci czy jedno glowne zapytanie i pozniej w petli wykonywanie osobno tamtych podzapytan jako zapytania dla kazdego ze znalezionych wierszy z glownego zapytania? chodzi mi o MySQL + PHP... Dzieki z gory za odpowiedz. Pozdrawiam.
-- Wysłano z serwisu OnetNiusy: http://niusy.onet.pl
Artur Muszynski - 26-03-2007 00:01
Maciek wrote: > witam. > Co jest z zalozenia wydajniejsze (jesli chodzi o szybkosc dzialania): > jedno zapytanie, ktore ma wiele podzapytan do roznych tabel, czesto > operujace na wielu tabelach, ktore wyliczaja dla danego wiersza z > glownego zapytania odpowiednie wartosci czy jedno glowne zapytanie i > pozniej w petli wykonywanie osobno tamtych podzapytan jako zapytania > dla kazdego ze znalezionych wierszy z glownego zapytania? > chodzi mi o MySQL + PHP...
Po zapytaniach w pętli można łatwo rozpoznać początkujących programistów. Jeśli wynikiem ma być jedna tabela, to trzeba ją starać się wyprodukować pojedynczym zapytaniem. Jeśli struktura typu master-child, to mogą być 2, ale na pewno żadnych pętli.
artur
Herakles - 27-03-2007 00:03
Maciek wrote:
> witam. > Co jest z zalozenia wydajniejsze (jesli chodzi o szybkosc dzialania): > jedno zapytanie, ktore ma wiele podzapytan do roznych tabel, czesto > operujace na wielu tabelach, ktore wyliczaja dla danego wiersza z glownego > zapytania odpowiednie wartosci czy jedno glowne zapytanie i pozniej w > petli wykonywanie osobno tamtych podzapytan jako zapytania dla kazdego ze > znalezionych wierszy z glownego zapytania? > chodzi mi o MySQL + PHP... > Dzieki z gory za odpowiedz. > Pozdrawiam. > Stwórz se tabelkę z milionem losowych rekordów i sprawdź sam!
Ja myślę, że chodzi Ci o taki przypadek(napiszę nieelegancko):
select p.*, count(pt.id) from p natural join pt group by p.* order by p.x limit 10 offset 10;
Takie coś może trwać dwa dni, więc logicznie wydaje się, że szybciej w pętli, ale nieprawda, jest wyjście z sytuacji:
select p.*, count(pt.id) from (select p.* from p order by p.x limit 10 offset 10) as p natural join pt group by p.* order by p.x
<=> wyniki agregacji nie są potrzebne do sortowań i innych => duże tabele należy projektować tak żeby nie były.
jerzy - 29-03-2007 00:03
>> chodzi mi o MySQL + PHP... > > Po zapytaniach w pętli można łatwo rozpoznać początkujących > programistów. Jeśli wynikiem ma być jedna tabela, to trzeba ją starać > się wyprodukować pojedynczym zapytaniem. Jeśli struktura typu > master-child, to mogą być 2, ale na pewno żadnych pętli. > > artur > 100% racji ale, specyfiką układu baza_danych/php jest, żeby coś pokazać (Wynik) to trzeba użyć "echo", tzn. przeglądarki rozumieją tylko html'a zdarza się że zakręcenie pętlą upraszcza.
zanotowane.pldoc.pisz.plpdf.pisz.pleffulla.pev.pl
|
Oracle, SQL, PL/SQL. Jak =?ISO-8859-2?Q?napisa=E6_zapytanie=2C?==?ISO-8859-2?Q?_kt=F3re_zwr=F3ci_nazw=EA_atrybutu=2C_kt=F3reg o?==?ISO-8859-2?Q?_warto=B6ci_spe=B3niaj=B1_zadany_warunek?=
=?ISO-8859-2?Q?Narz=EAdzie_do_budowania_zapyta=F1_SQL=2C?==?I SO-8859-2?Q?_PL/PgSQL=2C_PL/SQL=2C_T-SQL?=
[ms sql] =?ISO-8859-2?Q?wy=B6wietlenie_pierwszych_5_rekord?==?ISO-8859-2?Q?=F3w_z_zapytania_=3F_odpowiednik_ROWNUM_w_o?== ?ISO-8859-2?Q?raclu_dla_MS_SQL=27a?=
phpMyAdmin zadaje =?ISO-8859-2?Q?z=B3e_zapytania=2E=2E=2E_Dl?==?ISO-8859-2?Q?aczego=3F?=
[MSSQL2000] Problem z =?ISO-8859-2?Q?tabel=B1/indeksem/zapytanie?==?ISO-8859-2?Q?m_czy_b=B3=B1d_w_bazie_danych=2E=2E=2E?=
[oracle] zapytanie dynamiczne z =?ISO-8859-2?Q?=22dynamiczn=B1_?==?ISO-8859-2?Q?nazw=B1_tabeli=22?=
[mysql/php] jak =?ISO-8859-2?Q?zliczy=E6_ilo=B6=E6_unikalnyc?==?ISO-8859-2?Q?h_rekord=F3w_w_jednym_zapytaniu=3F?=
[MySQL] Zapytanie z =?ISO-8859-2?Q?dw=F3ch_tabel_na_raz_?==?ISO-8859-2?Q?i_grupowanie_po_wsp=F3lnym_polu=2E_Jak_=3F?=
mecze sie i mecze i nic - zapytanie czesciowe
[sql][pgsql] zapytanie sql
zanotowane.pldoc.pisz.plpdf.pisz.plponland.htw.pl
Cytat
Decede mihi sole - nie zasłaniaj mi słonca. Gdy kogoś kochasz, jesteś jak stworzyciel świata - na cokolwiek spojrzysz, nabiera to kształtu, wypełnia się barwą, światłem. Powietrze przytula się do ciebie, choćby był mróz, a ty masz w sobie tyle radości, że musisz ją rozdawać wokoło, bo się w tobie nie mieści Hoc fac - tak czyń. A tergo - od tyłu; z tyłu. I czarne włosy posiwieją. Safona |
|