Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> Zapytanie generuje duże obciążenie serwera
nc715
post 5.10.2012, 19:17:27
Post #1





Grupa: Zarejestrowani
Postów: 7
Pomógł: 0
Dołączył: 16.08.2012

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


Witam,
dostałem ostatnio od administratora wiadomość, że pewne zapytanie generuje duże obciążenie.

  1. SELECT *, SUM(op.price * op.quantity ) AS total_price FROM main_order o JOIN main_order_product op ON o.id_order = op.id_order GROUP BY o.id_order ORDER BY o.ordered_date DESC LIMIT 30,10


ktoś ma pomysł na to, bo nie bardzo się orientuje w temacie?

Ten post edytował nc715 5.10.2012, 23:19:23
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi (1 - 4)
BaN
post 5.10.2012, 21:46:51
Post #2





Grupa: Zarejestrowani
Postów: 158
Pomógł: 43
Dołączył: 9.11.2007

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


Brakuje najważniejszych informacji: jak wygląda EXPLAIN zapytania oraz jakie indeksy założone na tabelach. Poza konkursem: ile czasu wykonuje się to zapytanie i ile rekordów w tabelach

Na podstawie samego zapytania można stwierdzić, że indeksy muszą być założone na polu 'id_order' w obu tabelach, pewnie w jednej jest to primary

Naprawdę potrzebujesz wszystkich pól skoro jest SELECT *. I jakie to zapytanie ma wyciągnąć dane? Bo coś nie podoba mi się ORDER BY o.ordered_date DESC, prawdopodobnie można sortować po 'id_order'
Go to the top of the page
+Quote Post
mmmmmmm
post 5.10.2012, 22:06:44
Post #3





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

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


Zapytanie jest źle napisane . Powinno być:
  1. SELECT o.id_order, o.ordered_date, SUM(op.price * op.quantity ) AS total_price FROM main_order o JOIN main_order_product op ON o.id_order = op.id_order GROUP BY o.id_order, o.ordered_date ORDER BY o.ordered_date DESC

Indexy (KEY-e) na: o.id_order, op.id_order, o.ordered_date

Ten post edytował mmmmmmm 5.10.2012, 22:07:03
Go to the top of the page
+Quote Post
nc715
post 6.10.2012, 18:33:25
Post #4





Grupa: Zarejestrowani
Postów: 7
Pomógł: 0
Dołączył: 16.08.2012

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


Dzięki za odpowiedź
zamiast * , wyszczególniłem konkretne pola i z 65 pól zostało mi 16 ; )

Czy to oznacza, że zapytanie powinno się wykonywać 4x szybciej teraz?
Go to the top of the page
+Quote Post
BaN
post 7.10.2012, 15:49:36
Post #5





Grupa: Zarejestrowani
Postów: 158
Pomógł: 43
Dołączył: 9.11.2007

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


Cytat(nc715 @ 6.10.2012, 19:33:25 ) *
Czy to oznacza, że zapytanie powinno się wykonywać 4x szybciej teraz?


Nie
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: 21.06.2025 - 17:40