![]() |
![]() |
![]()
Post
#1
|
|
Grupa: Zarejestrowani Postów: 159 Pomógł: 5 Dołączył: 31.08.2007 Ostrzeżenie: (0%) ![]() ![]() |
Najchętniej to w takim momentach był zrobił to: (IMG:style_emoticons/default/sciana.gif)
Mam zapytanie i baze, niby wszystko ok, ale wykonuje sie troche długo bo baza produktów troche w EroBAY urosła... Zapytanie jest z wyszukiwarki, a konkretnie przyporządkowuje kategorie produktów względem znalezionych w bazie danych... Oto query:
Problem znajduje się w subzapytaniu zwracającym wartość licznik, a konkretnie w kolejnym zagnierzdzeniu które wpisuje do IN podkategorie.. Może ktoś ma jakiś fajny pomysł jak to ugryźć... |
|
|
![]() |
![]()
Post
#2
|
|
Grupa: Zarejestrowani Postów: 226 Pomógł: 61 Dołączył: 20.08.2010 Ostrzeżenie: (0%) ![]() ![]() |
Z tego co widzę to drzewko kategorii jest zrobione w "sprytny" sposób przez zapisanie ID w stringu ( "2.34.232.3422" ). Nazwanie kolumny CAT_Ip i oddzielanie liczb kropkami nie sprawia, że rozwiązanie jest bardziej profesjonalne, równie dobrze można oddzielać je przecinkami.
Taką strukturę stosują ludzie, którym bardziej zależy na łatwości zapisania zapytania ( WHERE ip LIKE id + '.%' ) niż na wydajności - czyli masz to co chciałeś (IMG:style_emoticons/default/smile.gif) Najlepsze rozwiązanie to google -> mysql category tree, przeanalizować kilka rozwiązań, wybrać najlepsze, przerobić strukturę bazy. Rozwiązania doraźne: Widzę, że w podzapytaniu zakładasz, że CAT_Id jest zawsze na początku CAT_Ip. Może da się to wykorzystać, wstawić jakąś dodatkową kolumnę do tabeli categories z powtórzonymi danymi, zamienić skorelowane podzapytanie na JOINa, cokolwiek. Tylko najpierw muszę wiedzieć co jest w kolumnie CAT_Ip. A dokładnie to ID której kategorii jest na samym początku. |
|
|
![]() ![]() |
![]() |
Aktualny czas: 27.09.2025 - 05:08 |