![]() |
![]() |
![]()
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:
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 |
|
|
![]() |
![]()
Post
#2
|
|
Grupa: Zarejestrowani Postów: 341 Pomógł: 40 Dołączył: 23.06.2009 Ostrzeżenie: (0%) ![]() ![]() |
hmm.
mysle ze kluczem do odpowiedzi jest odpowiedz na pytanie, co chcesz zrobic z wynikami? moze w podpunktach: aktualnosc danych ilosc odwolan do tych samych danych dalsze obrabianie wynikow jesli bedziesz znac odpowiedz na te kluczowe pytania - latwiej bedzie dac odpowiedz. scenariusz 1 musze miec dostep do aktualnych danych, wyniki nie podlegaja dalszej obróbce po stronie mysql odpowiedz: zapytanie, lub ewentualnie procedura. procedure trzeba umiejetnie napisac (zreszta procedury to osobna kwestia) byc moze, lepiej bedzie ci rozbic skomplikowane zapytanie na kilka mniejszych? bedzie o wiele wydajniej (kwestia wielowatkowosci mysql) scenariusz 2 musze miec aktualne dane, musze obrabiac dalsze dane odpowiedz: widok tracisz odrobine na wydajnosci, ale zyskujesz latwy dostep do aktualnych danych scenariusz 3 chce miec szybki wydajny i wygodny dostep do danych. dane moga byc aktualizowane np. co 30min. odpowiedz: tabele tymczasowe, lub tabele generowane tabele tymczasowa - zyskujesz najszybszy dostep do danych (wypelniane sa RAZ NA SESJE), klopotem jest odpowiednie zainicjowanie takiej tabeli, ale to do zrobienia. tabele generowane(nie znam dobrej nazwy, chodzi o tabele z zrzutem danych) - cos a'la tabela tymczasowa, tyle ze nie generujesz tego per sesja - tylko per czas. musisz tutaj wykonac dodatkowy skrypt ktory co okreslony interwal czasu bedzie wypelnial dane (oczywiscie mija sie z celem jesli musisz miec aktualne dane np co 5 min. to dziala najlepiej raz na kilkadziesiat minut - raz na pare godzin/raz na dzien) skrypt odpalasz albo jako events, albo z crona. oczywiscie to schematy rozwiazan, to zalezy tak naprawde co potrzebujesz - i co potrafisz. j. ps do testowania zapytan uzywal SQL_NO_CACHE w zapytaniu, nie bedziesz wtedy kozystac z qc, a tak naprawde explain prawde ci powie Ten post edytował alegorn 5.03.2012, 16:09:46 |
|
|
![]() ![]() |
![]() |
Aktualny czas: 9.10.2025 - 13:04 |