Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [mysql] optymalizacja
Forum PHP.pl > Forum > Bazy danych > MySQL
propage
mam proste zapytanie
Kod
SELECT product_id FROM produkt p left join produktML m pML on (pML.produckt_id = p.produkt_id)  WHERE  (
                    ( MATCH(pML.product_url) AGAINST ('test')) OR
                    (   p.prodcukt_code = 'test')
                        )

Zapytanie wykonuje się w czasie 1 s.
Kod
SELECT product_id FROM produkt p left join produktML m pML on (pML.produckt_id = p.produkt_id)  WHERE  (
                     MATCH(pML.product_url) AGAINST ('test'))
                     )

Zapytanie wykonuje się w czasie 0.001 s.

Kod
SELECT product_id FROM produkt p left join produktML m pML on (pML.produckt_id = p.produkt_id)  WHERE  (
                    
                    (   p.prodcukt_code = 'test')
)

Zapytanie wykonuje się w czasie 0.001 s.


Trochę dziwne wydaje mi się, że jeśli te dwa warunki umieszcze razem w jednym zapytnaiu do zapytanie wykonuje się 50 razy dłużej niż, jak osobno (i summuję ich czas). Jest jakiś sposób na zoptymalizowanie 1 zapytania? W bazie jest 200 tys rekordów.
arrtxp
Wniosek jest jeden, zapytanie w zapytaniu nie zawsze jest optymalne : )
Czasem lepiej rozbić to na dwa biggrin.gif
propage
ale tutaj nie ma zapytania w zapytaniu jest tylko jedno WHERE x OR y
redeemer
Zrób explain na zapytaniach, a wszystko się powinno wyjaśnić (zwróć uwagę na kolumny rows, key i Extra).
propage
robiłem, jest wszedzie `index' lub `where' wiec wszystko chyba jest ok.
nospor
No niestety tak bywa.... zrob UNION na tych dwoch zapytaniach i bedziesz mial szybko i w jednym zapytaniu 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.