我遇到了 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 扩展使用这个请求的 EXPLAIN 时,我看到:
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 扩展看不到日期时间索引并且不能使用它。USE INDEX (created) 和 FORCE INDEX (created) 没有帮助。
我如何向 Mysqli 扩展“解释”应该使用日期时间索引?