Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> optymalizacja zapytań i bazy danych
Arek00
post
Post #1





Grupa: Zarejestrowani
Postów: 177
Pomógł: 0
Dołączył: 8.11.2005

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


przeglądając phpmyadmin znalazłem coś takiego:
(IMG:http://img293.imageshack.us/img293/2091/mysqlne9.th.jpg)

w jaki sposób zabrać się za usunięcie tych błędów? jak sprawdzić czy zapytanie poprawnie używa indeksów?
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi
kitol
post
Post #2





Grupa: Zarejestrowani
Postów: 162
Pomógł: 26
Dołączył: 19.01.2007

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


W zapytaniu zmień:
  1. sklep_cennik.dostepnosc LIKE 'T'

na
  1. sklep_cennik.dostepnosc='T'


Wydaje mi się że:
  1. LEFT JOIN opis_nazwy ON opis_nazwy.id_produktu = sklep_cennik.id_produktu
  2. WHERE opis_nazwy.id_produktu IS NOT NULL

lepiej zamienić na:
  1. RIGHT JOIN opis_nazwy ON opis_nazwy.id_produktu = sklep_cennik.id_produktu


Proponuję takie zapytanie:
  1. SELECT opis_nazwy.id_produktu, opis_nazwy.nazwa
  2. FROM sklep_cennik RIGHT JOIN opis_nazwy ON opis_nazwy.id_produktu = sklep_cennik.id_produktu
  3. WHERE sklep_cennik.dostepnosc='T'
  4. ORDER BY rand()
  5. LIMIT 9


Widzę że tabele są łączone po PRIMARY KEY więc jest OK. Czy id_produktu to INT, czy coś innego?
Poza tym indeks powinien być założony na sklep_cennik.dostepnosc.
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: 4.10.2025 - 11:44