Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> Sposób na ORDER BY przy milionach krotek w bazie, Jak mozna przyspieszyć sortowanie dużej ilości rekordów
Sajrox
post
Post #1





Grupa: Zarejestrowani
Postów: 254
Pomógł: 7
Dołączył: 9.10.2007
Skąd: Poznań

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


Witam,

Od jakiegoś czasu tworze serwis który zawiera sporą ilość danych.
Przy wyświetlaniu ich z bazy i przedstawienie w formie listy (oczywiście ze stronicowaniem) nie ma problemu.

  1. SELECT p.id,p.nazwa,count(o.produkty_id),min(o.cena),avg(o.trafnosc) FROM produkty AS p INNER JOIN oferty AS o ON p.id=o.produkty_id GROUP BY o.produkty_id LIMIT 0, 20


Kłopotem jest gdy chcę te wyniki posortować np po nazwie malejąca.
  1. SELECT p.id,p.nazwa,count(o.produkty_id),min(o.cena),avg(o.trafnosc) FROM produkty AS p INNER JOIN oferty AS o ON p.id=o.produkty_id GROUP BY o.produkty_id ORDER BY p.nazwa DESC LIMIT 0, 20


Może ktoś ma jakiś pomysł na to aby to jakoś przyspieszyć ? BEz sortowania działa jak burza po użyciu ORDER BY zaczynają się schody :/

Na polu nazwa mam założony index.

Ten post edytował Sajrox 3.02.2009, 00:54:19
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi (1 - 2)
zegarek84
post
Post #2





Grupa: Zarejestrowani
Postów: 1 332
Pomógł: 294
Dołączył: 12.10.2008
Skąd: Olkusz

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


Cytat
Na polu nazwa mam założony index

a ten index na pewno masz po DESC??
Go to the top of the page
+Quote Post
Sajrox
post
Post #3





Grupa: Zarejestrowani
Postów: 254
Pomógł: 7
Dołączył: 9.10.2007
Skąd: Poznań

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


Właśnie zauważyłem że index mam po ASC ale jeśli chce sortować malejąco lub rosnąco. To po prostu musze założyć 2 indexy na pole nazwa raz ASC a drugi raz DESC ? Czy to nie będzie sprzeczne z wszystkimi zasadami tworzenia optymalnej bazy danych ?
Go to the top of the page
+Quote Post

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: 18.09.2025 - 08:50