Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> Optymalizacja zapytania, LEFT JOINT, porównanie tabel
Enikc
post 24.08.2015, 09:41:15
Post #1





Grupa: Zarejestrowani
Postów: 26
Pomógł: 0
Dołączył: 8.01.2015

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


Cześć mam takie zapytanie:

  1. SELECT DP.lp FROM MZ
  2. LEFT JOIN MG
  3. ON MG.id = MZ.super
  4. LEFT JOIN DK
  5. ON MG.idhandl = DK.id
  6. LEFT JOIN DP
  7. ON DP.super = DK.id
  8. WHERE MG.id = 100307
  9. AND MZ.idtw <> DP.idtw


DK - dokument sprzedażowy
DP - produkty na dokumencie sprzedażowym

MG - dokument magazynowy
MZ - pordukty na dokumencie magazynowym

Na dokumencie magazynowym jest 1 produkt
Na dokumencie sprzedażowym są 3 produkty

Zapytanie daje dobry wynik LP (liczba porzadkowa) 2 i 3 nie jest zgodna.
Tylko troche to długo trwa, czy można to jakoś usprawnić?
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi (1 - 5)
Pyton_000
post 24.08.2015, 09:42:35
Post #2





Grupa: Zarejestrowani
Postów: 8 068
Pomógł: 1414
Dołączył: 26.10.2005

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


indeksy pozakładane?
Go to the top of the page
+Quote Post
bobek358
post 24.08.2015, 10:04:50
Post #3





Grupa: Zarejestrowani
Postów: 143
Pomógł: 22
Dołączył: 17.11.2007

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


Najlepiej wywołaj zapytanie z
  1. EXPLAIN
powie ono z jakich indeksów korzysta zapytanie.
Go to the top of the page
+Quote Post
Enikc
post 24.08.2015, 12:28:54
Post #4





Grupa: Zarejestrowani
Postów: 26
Pomógł: 0
Dołączył: 8.01.2015

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


inner outer left right, ma znaczenie w szybkosci działania?
Go to the top of the page
+Quote Post
ilies
post 24.08.2015, 13:44:42
Post #5





Grupa: Zarejestrowani
Postów: 20
Pomógł: 2
Dołączył: 22.07.2009

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


Poczytaj sobie: inner outer left right
Go to the top of the page
+Quote Post
mmmmmmm
post 24.08.2015, 20:25:21
Post #6





Grupa: Zarejestrowani
Postów: 1 421
Pomógł: 310
Dołączył: 18.04.2012

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


Wywal LEFT JOINY. Jeśli interesują cię NULLe, a bierzesz dane z tabeli, gdzie dla LEFT może być Null, to równie dobrze jest to taka sama informacja, jak brak danych. Czyli skorzystaj z normalnego JOINa. A sporo przyspieszy.
Go to the top of the page
+Quote Post

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

 



RSS Wersja Lo-Fi Aktualny czas: 14.08.2025 - 13:39