0

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拡張機能に「説明」するにはどうすればよいですか?

4

1 に答える 1