我有一個問題,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。 –