Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> Optymalizacja zapytania, Zapytanie, które zawiesza serwer....
Balon
post 18.05.2007, 17:05:29
Post #1





Grupa: Zarejestrowani
Postów: 422
Pomógł: 0
Dołączył: 14.12.2005
Skąd: Wałbrzych

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


Niedawno pisałem z prosba o pomoc w ustaleniu logiki tworzenia zapytania na konkretnym przykładzie.

http://forum.php.pl/index.php?showtopic=68582&hl=

Na takiej zasadzie jaką wymyśliłem sobie tam stworzyłem tą wyszukiwarkę. Zawiera ona 7 pól. Docelowo będzie około 20.

Teraz problem jest taki, tak jak pisałem w tamtym temacie, że zapytanie to będzie bardzo wolne. Jednak okazało się, że jest jeszcze gorzej. To zapytanie mi wiesza serwer lokalny.. Można się domyślić że dlatego że porównuje dane z 15 kopii tabel...

Zapytanie wygląda tak..
  1. SELECT i.*, u.name
  2. FROM items i, users u, cechy c1, cechy c2, cechy c3, cechy c4, cechy c5, cechy c6, cechy c7, details d1, details d2, details d3, details d4, details d5, details d6, details d7
  3. WHERE i.id = d1.id AND i.id = d2.id AND i.id = d3.id AND i.id = d4.id AND i.id = d5.id AND i.id = d6.id AND i.id = d7.id AND i.userid = u.id AND d1.id_cecha = c1.id AND d1.value LIKE "%1%" AND c1.name = "Aparat" AND d2.id_cecha = c2.id AND d2.value LIKE "%%" AND c2.name = "Cena" AND d3.id_cecha = c3.id AND d3.value LIKE "%1%" AND c3.name = "JAVA" AND d4.id_cecha = c4.id AND d4.value LIKE "%13%" AND c4.name = "Model" AND d5.id_cecha = c5.id AND d5.value LIKE "%1%" AND c5.name = "Polifionia" AND d6.id_cecha = c6.id AND d6.value LIKE "%7%" AND c6.name = "Producent" AND d7.id_cecha = c7.id AND d7.value LIKE "%%" AND c7.name = "Rok produkcji"


Trochę za dużo jak na głupią szukajke, nie ? smile.gif

Czy ktoś jest w stanie naprowadzić mnie na sposób zoptymalizowania tego zapytania ? To dla mnie bardzo ważne - aktualny projekt...

Pozdrawiam,
Balon !

Ten post edytował Balon 18.05.2007, 19:02:10


--------------------
Postura wielka i morda wredna, jestem Balon, kozak z osiedla !
bzdury.pl - Królestwo rozrywki
Go to the top of the page
+Quote Post
Sedziwoj
post 18.05.2007, 20:49:10
Post #2





Grupa: Zarejestrowani
Postów: 793
Pomógł: 32
Dołączył: 23.11.2006
Skąd: Warszawa

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


pytanie, dlaczego cechy trzymasz w osobnych tabelach?


--------------------
Algorytmy w PHP, czy ktoś o tym słyszał?
Dlaczego tak mało kobiet programuje? ponieważ nie zajmują się głupotami.
Go to the top of the page
+Quote Post
Balon
post 18.05.2007, 21:21:27
Post #3





Grupa: Zarejestrowani
Postów: 422
Pomógł: 0
Dołączył: 14.12.2005
Skąd: Wałbrzych

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


Cechy trzymam osobno tak żeby można je było szybko łatwo edytować i dodawać. Poza tym są 4 różne podstrony o zróżnicowanych cechach. Starałem się zrobić wszystko tak aby można było łatwo poszerzać stronę o nowe podstrony, cechy itd.


--------------------
Postura wielka i morda wredna, jestem Balon, kozak z osiedla !
bzdury.pl - Królestwo rozrywki
Go to the top of the page
+Quote Post
Sedziwoj
post 18.05.2007, 22:11:27
Post #4





Grupa: Zarejestrowani
Postów: 793
Pomógł: 32
Dołączył: 23.11.2006
Skąd: Warszawa

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


I co będziesz wszędzie tworzył tabeli a potem złączał 200 takich samych?
Tak mi się nasunął przykład, to jakby tworzenie tabeli z informacją o pracowniku dla każdego z działów firmy...
Pytanie ile masz danych w tych tabelkach, że wywala serwer?


--------------------
Algorytmy w PHP, czy ktoś o tym słyszał?
Dlaczego tak mało kobiet programuje? ponieważ nie zajmują się głupotami.
Go to the top of the page
+Quote Post
Balon
post 18.05.2007, 22:57:28
Post #5





Grupa: Zarejestrowani
Postów: 422
Pomógł: 0
Dołączył: 14.12.2005
Skąd: Wałbrzych

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


cechy : 19 rekordów
details : 36 rekordów
items : 8 rekordów

Wiem, że to głupie z tym zapytaniem do wyszukiwania.. Dlatego pytam czy jest jakaś alternatywa.


--------------------
Postura wielka i morda wredna, jestem Balon, kozak z osiedla !
bzdury.pl - Królestwo rozrywki
Go to the top of the page
+Quote Post
Sedziwoj
post 18.05.2007, 23:37:25
Post #6





Grupa: Zarejestrowani
Postów: 793
Pomógł: 32
Dołączył: 23.11.2006
Skąd: Warszawa

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


Skoro robisz LIKE to po co się męczysz?
A przy zagadnieniu indexowani, czy ogólnie wyszukiwania informacji, nie pomogę, bo sam się tym nie interesowałem i nie mam wiedzy którą mógł bym się dzielić.


--------------------
Algorytmy w PHP, czy ktoś o tym słyszał?
Dlaczego tak mało kobiet programuje? ponieważ nie zajmują się głupotami.
Go to the top of the page
+Quote Post
Balon
post 19.05.2007, 09:02:14
Post #7





Grupa: Zarejestrowani
Postów: 422
Pomógł: 0
Dołączył: 14.12.2005
Skąd: Wałbrzych

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


Cytat(Sedziwoj @ 18.05.2007, 22:37:25 ) *
Skoro robisz LIKE to po co się męczysz?


Nie rozumiem... snitch.gif

Myślę sobie, że osobno będę pobierał te detale + cechy zapytanie po zapytaniu i będę to cache'ował. I po sprawie będzie winksmiley.jpg

EDIT: Jednak nie, bo co mi to da... I tak żeby szukać to wszystko to będę musiał łączyć tabele..


--------------------
Postura wielka i morda wredna, jestem Balon, kozak z osiedla !
bzdury.pl - Królestwo rozrywki
Go to the top of the page
+Quote Post

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

 



RSS Wersja Lo-Fi Aktualny czas: 14.07.2025 - 12:43