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 拡張機能は datetime インデックスを認識せず、使用できません。USE INDEX (作成済み) と FORCE INDEX (作成済み) は役に立ちません。
日時インデックスを使用する必要があることをMysqli拡張機能に「説明」するにはどうすればよいですか?