why won't mysql use an index?
Date: November 03, 2009 11:53AM
For some reason, mysql just won't use an index on this table on my query no matter how I set up the columns in the index. Even if I force index on it, it won't recognize the columns in the index and basically treats it like normal. Any recommendations?
mysql> desc VARPTCRD;
+-----------+---------------+------+-----+---------+-------+
| Field | Type | Null | Key | Default | Extra |
+-----------+---------------+------+-----+---------+-------+
| XPDCOMP | decimal(2,0) | NO | PRI | | |
| XPDBATC | decimal(6,0) | NO | PRI | | |
| XPDCUST | char(7) | NO | PRI | | |
| XPDGYIN | char(10) | NO | PRI | | |
| XPDIDTE | decimal(8,0) | NO | PRI | | |
| XPDLINE | decimal(3,0) | NO | PRI | | |
| XPDSRCINV | decimal(6,0) | NO | | | |
| XPDSORT | char(1) | NO | | | |
| XPDITEM | char(20) | NO | | | |
| XPDQTY | decimal(5,0) | NO | | | |
| XPDAMT | decimal(10,2) | NO | | | |
| XPDCRDT | decimal(8,0) | NO | | | |
| XPDCRTM | decimal(6,0) | NO | | | |
| XPDCHDT | decimal(8,0) | NO | | | |
| XPDCHTM | decimal(6,0) | NO | | | |
| XPDVEND | decimal(2,0) | NO | | | |
+-----------+---------------+------+-----+---------+-------+
mysql> show index in VARPTCRD;
+----------+------------+------------+--------------+-------------+-----------+-------------+----------+--------+------+------------+---------+
| Table | Non_unique | Key_name | Seq_in_index | Column_name | Collation | Cardinality | Sub_part | Packed | Null | Index_type | Comment |
+----------+------------+------------+--------------+-------------+-----------+-------------+----------+--------+------+------------+---------+
| VARPTCRD | 0 | VARPTCRD | 1 | XPDCOMP | A | NULL | NULL | NULL | | BTREE | |
| VARPTCRD | 0 | VARPTCRD | 2 | XPDBATC | A | NULL | NULL | NULL | | BTREE | |
| VARPTCRD | 0 | VARPTCRD | 3 | XPDCUST | A | NULL | NULL | NULL | | BTREE | |
| VARPTCRD | 0 | VARPTCRD | 4 | XPDGYIN | A | NULL | NULL | NULL | | BTREE | |
| VARPTCRD | 0 | VARPTCRD | 5 | XPDIDTE | A | NULL | NULL | NULL | | BTREE | |
| VARPTCRD | 0 | VARPTCRD | 6 | XPDLINE | A | 315535 | NULL | NULL | | BTREE | |
| VARPTCRD | 1 | VARPTCRD_1 | 1 | XPDCOMP | A | 1 | NULL | NULL | | BTREE | |
| VARPTCRD | 1 | VARPTCRD_1 | 2 | XPDIDTE | A | 1972 | NULL | NULL | | BTREE | |
+----------+------------+------------+--------------+-------------+-----------+-------------+----------+--------+------+------------+---------+
mysql> explain select * from R34FILES.VARPTCRD where xpdcomp = 1 and xpdidte >= 20080101 and xpdsort in ('A', 'C', 'X');
+----+-------------+----------+------+---------------------+------+---------+------+--------+-------------+
| id | select_type | table | type | possible_keys | key | key_len | ref | rows | Extra |
+----+-------------+----------+------+---------------------+------+---------+------+--------+-------------+
| 1 | SIMPLE | VARPTCRD | ALL | VARPTCRD,VARPTCRD_1 | NULL | NULL | NULL | 236652 | Using where |
+----+-------------+----------+------+---------------------+------+---------+------+--------+-------------+
Sorry, only registered users may post in this forum.
© 1995-2008 MySQL AB, 2008- Sun Microsystems, Inc.