Post
#1
|
|
|
Grupa: Zarejestrowani Postów: 11 Pomógł: 0 Dołączył: 23.04.2003 Ostrzeżenie: (0%)
|
Mam następujący problem.
Łącze 2 tabele: 1. zawiera główne dane itp i ma ID 2. zawiera powiązania pierwszej tabeli z trzecią tabelą: pola : ID, opcja_ID Trzecia tabela zawiera nazwy opcji, ale do wyszukiwania potrzebuje znajdować takie które mają te opcje zapisane i nie potrzebuje ich nazw wtedy wyświetlać. I problem polega na tym że potrzebuje wyszukiwać rekordy z tabeli 1 spełniające pewne tam kryteria, a dodatkowo spełniające opcje z powiązanej tabeli mam zapytanko :
to przykładowe zapytanie wyciąga wiersze z 1 tabeli które mają co najmniej zaznaczone opcje 50,34 i 35. Wiem że to zapytanie jest pokręcone ale do takiego doszłem. zapytanko działa, tylko dla 30000 rekordów w 1 tabeli i z miliona w drugiej to wykonuje sie 4 sekundy, a to trooche za dużo. Jakby ktoś miał jakiś pomysł jak to wyszukiwanie przyśpieszyć to byłbym bardzo wdzięczny (IMG:http://forum.php.pl/style_emoticons/default/smile.gif) z góry thx |
|
|
|
![]() |
Post
#2
|
|
|
Grupa: Zarejestrowani Postów: 121 Pomógł: 15 Dołączył: 19.07.2007 Ostrzeżenie: (0%)
|
4 sekundy to jednak troche za duzo jak na takie zapytanie.
hmm, skoro pobierasz tylko ID rekordow z pierwszej tabeli to po co wogole uzywasz inner joina, skoro pole ID masz tez w tabeli laczacej? nie prosciej tak:
a jesli chcesz pobrac jakies pola z pierwszej tabeli to sprobuj:
Dlaczego w klauzuli WHERE wt.opcja_ID = '50' OR wt.opcja_ID = '35' OR wt.opcja_ID = '34' zapisujesz wartosci pol opcja_id jako tekst a nie jako liczby? Mysql musi potem wykonac niepotrzebna kowersje. Jesli to nic nie pomoze to wklej tu wynik zapytania Twojego zapytania na poczatku dodajac fraze "EXPLAIN EXTENDED". Sporo informacji o optymalizacji zapytan znajduje sie MySQL Reference Manual http://dev.mysql.com/doc/refman/5.0/en/ Jesli masz zainstalowanego phpMyAdmin to przejrzyj dokladnie strone: Informacje o działaniu serwera. Ten post edytował osiris 21.08.2007, 10:36:36 |
|
|
|
Homiczek Optymalizacja wyszukiwania z INNER JOIN 21.08.2007, 09:17:33
mwojcik Jak na pytanie , w ktorym :
- laczysz 2 tabele
-... 21.08.2007, 10:04:12
Homiczek CytatDlaczego w klauzuli WHERE wt.opcja_ID = ... 21.08.2007, 11:37:35 ![]() ![]() |
|
Aktualny czas: 27.12.2025 - 12:37 |