dedlfix: Einträge auslesen

Beitrag lesen

Tach!

Wenn eine Klause auf Monat und Jahr liegt, muss schonmal gar nicht die ganze Tabelle durchlaufen werden: Genau da greift nämlich der Index -- Falls vorhanden.

Kann ich nicht nachvollziehen. Ich hab eine Testdatenbank genommen. Ein Index auf employees.birth_date war nicht vorhanden, den habe ich vor dem Test hinzugefügt. Das Ergebnis sagt, dass kein nutzbarer Key für die Query mit YEAR() verwendet werden konnte (MONTH() hab ich mir gespart). Beim BETWEEN hingegen konnte der Index jedoch verwendet werden.

EXPLAIN SELECT * FROM `employees` WHERE YEAR(`birth_date`)=1960

id|select_type|table|type|possible_keys|key|key_len|ref|rows|Extra 1|SIMPLE|employees|ALL|NULL|NULL|NULL|NULL|299348|Using where

EXPLAIN SELECT * FROM `employees` WHERE `birth_date` BETWEEN '1960-01-01' AND '1960-12-31'

id|select_type|table|type|possible_keys|key|key_len|ref|rows|Extra 1|SIMPLE|employees|range|birth_date|birth_date|3|NULL|47684|Using index condition

dedlfix.