Một vấn đề khác mà bạn có thể gặp phải là loại dữ liệu không khớp. Ví dụ:nếu cột của bạn là kiểu dữ liệu chuỗi (CHAR, ví dụ:) và truy vấn của bạn không trích dẫn một số, thì MySQL sẽ không sử dụng chỉ mục.
SELECT * FROM tbl WHERE col = 12345; # No index
SELECT * FROM tbl WHERE col = '12345'; # Index
Nguồn:Vừa mới chiến đấu với vấn đề tương tự ngày hôm nay và học cách khó trên MySQL 5.1. :)
Chỉnh sửa:Thông tin bổ sung để xác minh điều này:
mysql> desc das_table \G
*************************** 1. row ***************************
Field: das_column
Type: varchar(32)
Null: NO
Key: PRI
Default:
Extra:
*************************** 2. row ***************************
[SNIP!]
mysql> explain select * from das_table where das_column = 189017 \G
*************************** 1. row ***************************
id: 1
select_type: SIMPLE
table: das_column
type: ALL
possible_keys: PRIMARY
key: NULL
key_len: NULL
ref: NULL
rows: 874282
Extra: Using where
1 row in set (0.00 sec)
mysql> explain select * from das_table where das_column = '189017' \G
*************************** 1. row ***************************
id: 1
select_type: SIMPLE
table: das_column
type: const
possible_keys: PRIMARY
key: PRIMARY
key_len: 34
ref: const
rows: 1
Extra:
1 row in set (0.00 sec)