![]() |
![]() |
![]()
Post
#1
|
|
Grupa: Zarejestrowani Postów: 26 Pomógł: 0 Dołączył: 15.05.2004 Skąd: Kraków Ostrzeżenie: (0%) ![]() ![]() |
Mam wykonać zapytanie:
I problem sie pojawia gdy w którymkolwiek miejscu dodaje OR us.user_level = 1 nieważne czy jest to na koncu, czy na poczatku tego drzewa zależności i niezależnie od umieszczenia nawiasów, za każdym razem gdy to dodam zapytanie trwa kilkanaście sekund, a bez tego trwa ułamek sekundy. Próbowalem zamiast user_level dać inną zalezność i dalej to samo Nie wiecie co może byc powodem? Przy tym zapytaniu dodawane jest kilkanaście wpisów a tabela ma kilka tysięcy wpisów. Na nielicznych serwerach wyrzuca błąd zapytania SQL, juz w tej chwili nie pamiętam jaki i nie mam zapisanego, ale też powodem jest ten ostatni OR Struktura tabeli przemo_read_history wygląda tak:
Ten post edytował Przemo` 25.04.2005, 18:51:28 |
|
|
![]() |
![]()
Post
#2
|
|
Grupa: Przyjaciele php.pl Postów: 2 923 Pomógł: 9 Dołączył: 25.10.2004 Skąd: Rzeszów - studia / Warszawa - praca Ostrzeżenie: (0%) ![]() ![]() |
Filtry ktore uzywaja bazy danych dla ORow dzialaja bardzo dlugo. Tego niestety nie przeskoczysz, algorytmy przeszukiwania nie dzialaja tak jak dla AND. Bazka jest na MySQLu, wiec masz male pole do popisu, ale np w PG moglbys napisac sobie wlasna funkcyjke ktora bys wywolywal i zobaczyl bys rezutlat. Kiedys przy testach aplikacji dla ponad 30 milionow rekordow kilka ORow spowodowalo spadek wydajnosci do kilkudziesieciu sekund. Po "dostrojeniu" zapytania (funkcje ktora mozna by powiedziec robila jako filtr) zeszlo do < 1s.
|
|
|
![]()
Post
#3
|
|
Grupa: Zarejestrowani Postów: 26 Pomógł: 0 Dołączył: 15.05.2004 Skąd: Kraków Ostrzeżenie: (0%) ![]() ![]() |
Dziękuje za informacje, tego sie obawiałem (IMG:http://forum.php.pl/style_emoticons/default/sad.gif)
Niestety PG odpada, gdyż jest on na niewielu serwerach a chodzi tutaj o skrypt do powszechnego użytku. Pozdrawiam |
|
|
![]()
Post
#4
|
|
Grupa: Zarejestrowani Postów: 103 Pomógł: 0 Dołączył: 1.12.2003 Skąd: Gdynia Ostrzeżenie: (0%) ![]() ![]() |
Nie jestem do końca pewien jaki wpływ będzie to miało na performance, jendak może spróbować coś takiego.
Wydaje mi się, że ze względu na selektywność możesz dodać jeszcze indeks na polu us.user_level. Dawno nie bawiłem się tunningiem mysql'a jednak mam nadzieje, że to cos pomoże. Daj znać jakie będą efekty. Ten post edytował Synaps 27.04.2005, 07:59:26 |
|
|
![]() ![]() |
![]() |
Aktualny czas: 22.08.2025 - 23:49 |