Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> nie potrzebne tymczasowe tabele
suli
post
Post #1





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

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


mam taka baze danych:


products - pola: id,active(enum),deleted(enum), + kilka innych pol ale akurat tu nie uzywanych
products_contents - pola: pro_id(relacja do products.id),name(varchar(150), + kilka innych pol ale akurat tu nie uzywanych w tym content(text z fullsearch))



produktow jakies 200k i baza ciagle rosnie


robie prostego joina


explain select * from products join products_contents on pro_id = id where active ='1' and deleted = '0' Limit 10

wszystko super smiga az milo, w extra mam tylko: "using where)


problem pojawia sie wylacznie przy sortowaniu czyli:
explain select * from products join products_contents on pro_id = id where active ='1' and deleted = '0' order by name asc Limit 10


smiga troche gorzej no i tworzy mase tymczasowych tabel (probowalem juz zamieniac kolejnosciami products z products_contents i dziala to tylko wtedy gdy nie mam where dla products).. przez co admin mnie sie czepia, dodatkowo w extra mam:
Using where; Using temporary; Using filesort



ktos ma jakis pomysl jak to zoptymalizowac ?
przychodza mi do glowy dwa rozwiazania ale kazde ma jakies tam wady:

1. polaczyc obie tabele w jedna

2. skopiowac kolumny active i deleted do products_contents i w tym jednym przypadku korzystac wylacznie z products_contents

3. przeniesc name do tabeli products - chyba najlepsze rozwiazanie

4. ktos z na jakies inne ?
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: 15.09.2025 - 14:44