4

クエリでインデックスを使用しようとしましたが、役に立ちませんでした。定義されていますが、使用されていません。

これが私のインデックスです

Table  | Non_unique | Key_name   | Seq_in_index | Column_name | Collation | Cardinality | Sub_part | Packed | Null | Index_type | Comment  
--------------------------------------------------------------------------------------------------------------------------------------------------------
alerts |          1 | date_index |            1 | date        | A         |        9825 |     NULL | NULL   |      | BTREE   

これは私のクエリ+説明です:

EXPLAIN SELECT latitude, longitude, msg_id
        FROM alerts
        FORCE INDEX(date_index)
        WHERE date>1336312075;


| id | select_type | table  | type | possible_keys | key  | key_len | ref  | rows | Extra       |
--------------------------------------------------------------------------------------------------------
|  1 | SIMPLE      | alerts | ALL  | date_index    | NULL | NULL    | NULL | 9825 | Using where |

テーブルには 9825 行あり、選択した日付は最新の 9 行でした....したがって、9 行のみをスキャンする必要があります。

何か案は?ありがとう

4

1 に答える 1

4

推測date:あなたの列のタイプは何ですか?値1336312075が型ではない可能性はありdateますか? この場合、データベースは、インデックスを役に立たなくする可能性のある列の型に変換するのdateではなく、列のすべての値を型に変換することがあります。13363120751336312075date

date考えられる解決策: 値を列の型に変換します。

where date > convert_to_the_type_of_date_column(1336312075)
于 2012-06-13T10:19:01.543 に答える