![]() |
![]() |
![]() ![]()
Post
#1
|
|
Grupa: Zarejestrowani Postów: 96 Pomógł: 0 Dołączył: 11.09.2006 Skąd: Wrocław Ostrzeżenie: (0%) ![]() ![]() |
Witam,
Staram sie jakoś zoptymalizować zapytanie bo obecnie trwa bardzo długo. Nie wiem czy to wina bazy (a słyszałem bardzo wiele złego o tej bazie jeśli idzie o używaną pamięci), czy może moje zapytanie SQL jest nie optymalne. O to moje zapytanie SQL w jednym wywołaniu:
Czas oczekiwania na wynik tego zapytania trwa od 5 do 12 min.(IMG:http://forum.php.pl/style_emoticons/default/exclamation.gif) !! oraz zapytanie SQL w 17 zapytaniach: (Najpierw jedno zapytanie:)
a następnie wyniki poprzedniego zapytania puszczam w pętli foreach i dla każdego wiersza wywołuje kolejne zapytanie SQL (jest takich wywołań 16):
Czas oczekiwania na wynik tych dwóch powyższych zapytań (z czego drugie zapytanie jest wywołane w pętli 16 razy) trwa od 1 do 2 min.(IMG:http://forum.php.pl/style_emoticons/default/exclamation.gif) Wyniki tych zapytań są identyczne. I teraz pytanie, dlaczego tak sie dzieje... Może zapytania SQL są jakoś przeze mnie mało efektywnie stworzone.. Wielkie dzięki za jakąkolwiek pomoc, sugestie albo uwagii... Pozdrawiam... |
|
|
![]() |
![]()
Post
#2
|
|
Grupa: Zarejestrowani Postów: 156 Pomógł: 2 Dołączył: 9.09.2006 Skąd: Londyn/Gdynia Ostrzeżenie: (0%) ![]() ![]() |
No to odpowiedz jak na dloni: baza nie zaprojektowana pod dane zapytanie:/ Proponuje stowrzyc nowa strukture tabel oraz procedure ktora przepisze stare wpisy do nowej struktury, natomiast jesli chodzi o zapytania i dlugosc ich wykonywania to jesli przeszukujesz 1 tabele z 1k rekordow to jest ok ale jesli tych tabelek jest 10 i kazda ma po kilka k rekordow to nie dosc ze wszystko na czas operacji trafia do jakiegos shared poola firebirdowego to jeszcze jaka ilosc operacji do wykonania...
Proponuje przebudowac baze (dodac tabelek) pod dane wymagania oraz wlasnie tej procedurki:) Jelsi chodzi o subselecty:
na duzej ilosci danych dziala duzo szybciej niz JOINY, oczywiscie zakladajac ze sa rozsadnie pozakladane indexy:) Jesli baza nei jest caly czas mocno wykozystywana dobrym zwyczajem jest przebudowywanie indexow co jakis czas co moze tez przyspieszyc operacje. Pozdrawiam |
|
|
![]() ![]() |
![]() |
Aktualny czas: 6.10.2025 - 16:32 |