Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: wynik EXPLAIN, pomoc w optymalizacji
Forum PHP.pl > Forum > Bazy danych > MySQL
andycole
  1. SELECT
  2. zawodnicy.id, CONCAT(nazwisko, ' ', imie) AS zawodnik, pozycja, id_kraju, nazwa, YEAR(CURDATE())-YEAR(data_ur) AS ile
  3. FROM zawodnicy
  4. LEFT JOIN kraje ON zawodnicy.id_kraju=kraje.id
  5. WHERE DAY(data_ur)='7' AND MONTH(data_ur)='10';


wszelkie "id" to klucze podstawowe
data_ur to indeks

Mimo to EXPLAIN zwraca mi, ze nie uzywam indeksu (type ALL):

  1. id select_type TABLE type possible_keys KEY key_len ref rows Extra
  2. 1 SIMPLE zawodnicy ALL NULL NULL NULL NULL 3695 USING WHERE
  3. 1 SIMPLE kraje eq_ref PRIMARY PRIMARY 2 strona.zawodnicy.id_kraju 1


Jak inaczej dobrac sie do rekordow ktore maja pole DATE rowne podanemu dniu i miesiacu, obojetnie ktory rok.

zzeus
MySQL nie użyje indeksu jeśli w warunku WHERE używasz funkcji typu DAY() czy MONTH(). Przepisz zapytanie tak aby z nich nie korzystało.
andycole
wlasnie problem w tym, ze nie mam pomyslu jak mialbym to przepisac...
moze jakies wskazowki?
zalezy mi na zrobieniu tego zmieniajac tylko zapytanie... nie chce przechodzic na unixowy znacznik czasu ani robic tego z poziomu PHP

nikt nie pomoze? smile.gif
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.