Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> czy widok moze spowolnic zapytanie?
misty
post
Post #1





Grupa: Zarejestrowani
Postów: 366
Pomógł: 0
Dołączył: 2.01.2007

Ostrzeżenie: (0%)
-----


Czesc, mam takie pytani: mam tabele w ktorej jest dosc sporo danych. Mam przygotowany widok ktory mi z niej wyciaga jakies dam dane, max (czas), group by 2 pola oraz 1 join tam jest. Widok wyglada mniej wiecej tak:

  1. CREATE OR REPLACE VIEW test_v AS SELECT max(start_date), field_1, field_2, field_3, field_4
  2. FROM test_table_1
  3. LEFT JOIN test_table_2 ON test_table_2.id = test_table_1.test_table_2_id
  4. WHERE test_table_2_id IN (1,2,3,4,5,6,7,8,9,10)
  5. GROUP BY field_1, field_2


Zastanawiam sie, co w tym przypadku bedzie szybsze - czy za kazdym razem robienie select'a z tej tabeli (czyli parta kodu zaczynajaca sie od SELECT max..)
czy tez utowrzenie takiego widoku i robienie z niego selecta. Czy ten widok nie zabiera mi jakiegos cennego czasu? Lub czy moge sprawdzic (jak?) rzeczywisty czas wykonania zapytan? Bo z tego co sie orientuje to mysql cachuje zapytania, wiec wyniki ktore dostaje nie sa miarodajne.

Bede wdzieczna za wskazowki,
pzdr,
misty
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi
alegorn
post
Post #2





Grupa: Zarejestrowani
Postów: 341
Pomógł: 40
Dołączył: 23.06.2009

Ostrzeżenie: (0%)
-----


minimalnie szybciej (prawdopodobnie kwestia optymalizatora i tym podobnych, w razie czego w profilowaniu da sie to dokladnie sprawdzic)
jakiego rzedu sa te czasy? bijemy sie o sekundy? milisekundy?

tak naprawde musialbym wynik explain'a zobaczyc by ocenic, ale czysto teoretycznie, sprawca najwiekszego obciazenia w kolejnosci to:

o ile dobrze widze - potrzebujesz do tego tabel tymczasowych (w explain powinno byc to widac), jesli w tabeli masz duzo danych - tabele te musza byc zapisane na dysku czyli masz extra operacje IO
operacje wyliczeniowe(max - w jakim formacie masz ta kolumne?),
nastepnie agregujace (group by)

oczywiscie to co napisalem zalezy od tego jakie masz tabele, ile danych, jakie indexy (jakie zalozone - a pamietaj ze index potrafi spowalniac aplikacje)
tak naprawde od calej masy czynnikow..

powiedz mi do czego to potrzebujesz? do aplikacji webowej?
jak bardzo potrzebujesz aktualnych danych, i czy sa one czesto modyfikowane ?
byc moze najlepszym bedzie zastosowanie tabel tymczasowych... ale to juz kwestia z projektowania aplikacji/bazy
jesli mozesz - podaj strukture tych tabel, bedzie latwiej odpowiedziec.

ewentualnie, jesli masz taka mozliwosc rozbij to zapytanie na kilka mniejszych, wykorzystaj wielowatkowosc mysql'a, rozwiazan jest naprawde przynajmniej kilka.

j.
Go to the top of the page
+Quote Post

Posty w temacie


Reply to this topicStart new topic
2 Użytkowników czyta ten temat (2 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Aktualny czas: 10.10.2025 - 20:06