Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> Optymalizacja zapytania, Mam sporo informacji ale nie potrafię sobie z tym poradzić
TomASS
post
Post #1





Grupa: Zarejestrowani
Postów: 1 660
Pomógł: 13
Dołączył: 9.06.2004
Skąd: Wrocław i okolice

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


Cześć, mam takie oto zapytanie:

  1. SELECT
  2. DISTINCT T.NumerRef
  3. FROM
  4. m_transporty_miejsca AS TM LEFT JOIN
  5. m_transporty AS T ON (T.ID=TM.ID_transport)
  6. WHERE
  7. 1 AND
  8. (AnulowanyFE2='0' OR DateRealizacji>='2011-06-29') AND
  9. 1 AND
  10. T.Odleglosc>='0' AND
  11. T.Odleglosc<='99' AND
  12. T.ImportFE='1' AND
  13. ( T.ID_przewoznik='72' OR (STATUS='przedstawiony' AND 1) OR (Gielda='1' AND STATUS='gielda' AND 1) ) AND
  14. ( Miejsce='akt' OR (STATUS='zaksięgowane w SAP' AND DataDostarczenia IS NULL) )
  15. ORDER BY T.ID


Tabela m_transporty_miejsca 200 000 rekordów
Tabela m_transporty 100 000 rekordów
raczej małe ilości.

Zapytanie wykonuje się około 0,8s (średnia z 20pomiarów).
Jeśli usunę ostatni warunek w klauzuli WHERE:
  1. ( Miejsce='akt' OR (STATUS='zaksięgowane w SAP' AND DataDostarczenia IS NULL) )

a szczególnie
  1. OR (STATUS='zaksięgowane w SAP' AND DataDostarczenia IS NULL)

wówczas czas zapytania spada do 0,03 (średnia z 20pomiarów)

Indexy jakie min. mam pozakładane na tabelę m_transporty to:
ImportFE1: (ImportFE)
ImportFE2: (ImportFE+Miejsce)
ImportFE3: (ImportFE+Status+DataDostarczenia)

EXPLAIN tego zapytania wskazuje, że użyty jest indeks "ImportFE1"

Proszę o pomoc w optymalizacji.
Go to the top of the page
+Quote Post

Posty w temacie


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

 



RSS Aktualny czas: 25.08.2025 - 07:51