Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> proszę o pomoc przy utworzeniu zapytania, nie potrafię zmusić sql do korzystania z indeksów
Arek00
post
Post #1





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

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


mam takie tabele:

  1. -- Struktura tabeli dla `sklep_cennik`
  2.  
  3. `id_produktu` varchar(64) NOT NULL DEFAULT '',
  4. `kategoria` varchar(255) NOT NULL,
  5. `producent` varchar(64) NOT NULL DEFAULT '',
  6. `model` varchar(200) NOT NULL DEFAULT '',
  7. `cena` decimal(8,2) NOT NULL DEFAULT '0.00',
  8. `gwarancja` varchar(40) NOT NULL DEFAULT '',
  9. `kod_producenta` varchar(64) NOT NULL,
  10. `dostepnosc` varchar(2) NOT NULL DEFAULT 'N',
  11. `data` int(11) NOT NULL,
  12. PRIMARY KEY (`id_produktu`),
  13. KEY `kategoria` (`kategoria`),
  14. KEY `producent` (`producent`),
  15. KEY `model` (`model`),
  16. KEY `cena` (`cena`),
  17. KEY `dostepnosc` (`dostepnosc`),
  18. KEY `data` (`data`)
  19.  
  20. -- Struktura tabeli dla `opis_produktu`
  21.  
  22. `id_produktu` varchar(20) NOT NULL,
  23. `nazwa` varchar(255) NOT NULL DEFAULT '',
  24. `zdjecie` varchar(150) NOT NULL DEFAULT '',
  25. `opis` text collate NOT NULL,
  26. `fotka1` int(1) NOT NULL DEFAULT '0',
  27. `fotka2` int(1) NOT NULL DEFAULT '0',
  28. `fotka3` int(1) NOT NULL DEFAULT '0',
  29. PRIMARY KEY (`id_produktu`),
  30. KEY `fotka1` (`fotka1`)


potrzebuję wybrać 6 losowych produktów z takimi warunkami:

dostepnosc="T"
fotka1>0

zrobiłem takie zapytanie:

  1. SELECT * FROM sklep_cennik LEFT JOIN opis_produktu ON sklep_cennik.id_produktu = opis_produktu.id_produktu WHERE sklep_cennik.dostepnosc="T" AND opis_produktu.fotka1>0 ORDER BY rand() LIMIT 6


efekt jest taki:

Kod
id   select_type    table               type      possible_keys         key          key_len   ref                             rows    Extra
1    SIMPLE         sklep_cennik        range     PRIMARY,dostepnosc    dostepnosc   8         NULL                            8789    Using where; Using temporary; Using filesort
1    SIMPLE         opis_produktu       eq_ref    PRIMARY,fotka1        PRIMARY      62        sklep_cennik.id_produktu        1       Using where


czy da się jakoś te tabele połączyć tak żeby zmniejszyć ilość przetwarzanych wierszy?
Go to the top of the page
+Quote Post

Posty w temacie


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 Aktualny czas: 22.08.2025 - 05:38