MySQL und der Datum/Zeit Vergleich

Beispiel Tabelle

CREATE TABLE `api_cache` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `key` char(32) DEFAULT NULL,
  `data` longtext,
  `created` timestamp NULL DEFAULT CURRENT_TIMESTAMP ,
  `expired` timestamp NULL DEFAULT '0000-00-00 00:00:00',
  PRIMARY KEY (`cache_id`) USING BTREE,
  UNIQUE KEY `key` (`cache_key`),
  KEY `exp` (`cache_expired`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;

Möglichkeit 1

Diese Variante des Vergleichs mit einem Timestamp ist ziemlich langsam. Es wird kein Index benutzt

EXPLAIN SELECT * FROM api_cache
WHERE UNIX_TIMESTAMP(`expired`) < 1448229347

Möglichkeit 2

Diese Variante ist schneller und besser weil hier den Index verwendet Vorausgesetzt es wurde einer gesetzt.

EXPLAIN SELECT * FROM api_cache
WHERE `expired` < '2015-11-22 18:00:00'

 

Folgende Artikel könnten auch interessieren