Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [MySQL][PHP]Drzewo IP a produkty - optymalizacja bazy, zapytania
Forum PHP.pl > Forum > Przedszkole
Randallmaster
Witam,

Posiadam
1) 500 różnych kategorii
2) 64206 Produktów

Dalej.
1 towar może być połączony z kilkoma kategoriami

np towar

id_towaru | id kategorii | ip kategorii
1 | 64873 | 0.64872.64873
1 | 64877 | 0.64872.64873.64877
1 | 11 | 0.64872.12.11

powyższa tabela to tylko łącznik między kategorią a produktem, pełne drzewo ip znajduje się w innej tabeli

Teraz posiadam problem ze zrobieniem selecta ponieważ jeżeli zrobię taki select:

  1. SELECT * FROM `tabela_łącząca_produkty_i_kategorie` WHERE ip like ('0.64872.%') and id_towaru = 1


Przykładowo wchodzę do kategorii 0.64872 i szukam towarów tak jak powyżej

w wyniku dubluje mi towary ponieważ towar przypisany jest również do innych członów i towar wyświetla mi 3 razy...

mogę dodać distinct ale na małej ilości wyników w przypadku tej bazy mam pół miliona wpisów gdzie zapytanie trwa 10 sec. Potrzebuję to zoptymalizować.

Jakieś pomysły? smile.gif
nospor
group by id_towaru
tez muli? Masz zalozony w ogole KEY na pole ip?
Randallmaster
drzewo ip tworzyłem z innej tabeli i pracuje na strukturą bazy danych

id_towaru | id kategorii | ip kategorii

klucz założony jest aktualnie na id_towaru i id_kategorii bo tak dostaję z innej bazy. jeżeli założe klucz na ip

to i tak dublowanie będzie występowało z tego powodu:

id_towaru | id kategorii | ip kategorii
1 | 64873 | 0.64872.64873
1 | 11 | 0.64872.12.11

to klucz na ip załatwi sprawę wolnego zapytania? mimo tego przykładu powyżej nawet gdy użyję distinct?
group by id_towaru <- w select użyłem id towaru aby przybliżyć błąd docelowo pobiera wszystkie towary danej kategorii czyli:

  1. SELECT * FROM `tabela_łącząca_produkty_i_kategorie` WHERE ip like ('0.64872.%')


nospor
Ja to wszystko rozumiem. Ty mi tego nie tlumacz.

Mowie ci:
zalozl indeks na pole ip, bo po nim szukasz - to logiczne
Jesli nadal ci bedzie mulic z twoim distinct, to sprobuj group by jak pisalem
Randallmaster
Dzięki biorę się za testowanie smile.gif



Jeszcze takie szybkie upewniające się pytanie

Klucz ma być tylko na kolumnie ip?
nospor
A co ty sie tak boisz to wstawic? Toć nie wybuchnie tongue.gif

Jesli szukasz tylko po ip, to tak, wystarczy tylko zalozyc index na ip
Randallmaster
Nie nie boje smile.gif kto pyta nie błądzi tongue.gif
nospor
To szkoda ze nie widziales wczoraj jednego tematu... koleś pytał i dostawał takie odpowiedzi że trafił do jeszcze ciemniejszego lasu niż był wcześniej tongue.gif Dopiero jak pojawił się pewien moderator (ukhm, ukhm), to wyprowadził delikwenta na prawidłową drogę.

Wiec z tym pytaniem nie zawsze do końca jest tak różowo smile.gif
Randallmaster
W tym ciemnym lesie pewno dziewczyny spotkał i się zagubił biggrin.gif

Wracając do tematu zrobiłem tak jak pisałeś iiiiiiiiiiiiiiiiiiiiii smile.gif

Showing rows 0 - 24 (42521 total, Wykonanie zapytania trwało 0.0142 sekund(y))

Dzia!

Działa idealnie smile.gif
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.