我有一个问题,PHP的mysqli扩展和时间戳索引。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';
当我使用EXPLAIN从MySQL控制台或PHP MySQL扩展这一要求我看到:
possible_keys: created
key: created
key_len: const
ref: const
rows: 2
但是,当我做出同样的EXPLAIN从PHP mysqli扩展要求我有结果:
possible_keys: null
key: null
key_len: null
ref: null
rows: 31597251
这就是说,mysqli扩展没有看到日期时间索引并且不能使用它。 USE INDEX(已创建)和FORCE INDEX(已创建)不起作用。
我该如何'解释'Mysqli扩展应该使用日期时间索引?
请提供您的PHP代码,这将导致您的FULL SCAN情况。 –
不够清楚...提供代码示例 – jcobhams
这是不可能的。 Mysqli与查询计划无关。 Mysqli不执行你的查询 - 它只是一个将你的查询发送到mysql服务器的API。 –