Php mysqli 扩展和时间戳索引


Php mysqli extension and timestamp index

我在php mysqli扩展和时间戳索引方面遇到了问题。

我有一个这样的Mysql表:

CREATE TABLE `Test` (    `id` int(10) unsigned NOT NULL AUTO_INCREMENT, 
    `user_id` int(10)  unsigned NOT NULL DEFAULT '0',
    `created` timestamp  NOT NULL DEFAULT CURRENT_TIMESTAMP,
    'accepted',    
     PRIMARY KEY (`id`), 
     KEY `created` (`created`),    
     KEY `user_id` (`user_id`,`oid`)           
) ENGINE=InnoDB;  

我提出这样的要求:

SELECT * FROM `Test` WHERE created='2013-09-24 19:35:09';

当我从Mysql控制台或php Mysql扩展使用此请求的解释时,我看到:

possible_keys: created    
key: created    
key_len: const  
ref: const    
rows: 2

但是当我从 php Mysqli 扩展发出相同的 EXPLAIN 请求时,我得到了结果:

possible_keys: null    
key: null       
key_len: null      
ref: null     
rows: 31597251  

这意味着,mysqli扩展看不到日期时间索引,也不能使用它。使用索引(已创建)和强制索引(已创建)无济于事。

我如何向 Mysqli 扩展"解释"应该使用日期时间索引?

我已经找到了解决方案。

我应该使用:

SELECT * FROM `Test` WHERE created>=TIMESTAMP("2013-09-24 19:35:09");

并且始终使用索引。在另一种情况下,mysql 尝试将 int(日期时间)与字符串进行比较,但不能。

谢谢大家。