एक अन्य समस्या जिसका आप सामना कर रहे हैं वह है डेटा प्रकार का गलत मिलान। उदाहरण के लिए, यदि आपका कॉलम एक स्ट्रिंग डेटा प्रकार (उदाहरण के लिए CHAR) है, और आपकी क्वेरी किसी संख्या को उद्धृत नहीं कर रही है, तो MySQL अनुक्रमणिका का उपयोग नहीं करेगा।
SELECT * FROM tbl WHERE col = 12345; # No index
SELECT * FROM tbl WHERE col = '12345'; # Index
स्रोत:आज ही इसी मुद्दे पर लड़ाई लड़ी, और MySQL 5.1 पर कठिन तरीके से सीखा। :)पी>
संपादित करें:इसे सत्यापित करने के लिए अतिरिक्त जानकारी:
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)