Mysql索引不起作用

任何人都可以请告诉我为什么MySQL不使用'playerLead_status_INDEX'索引?

CREATE TABLE `bcs_player_lead`(
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `first_name` varchar(100) DEFAULT NULL,
  `last_name` varchar(100) DEFAULT NULL,
  `email_id` varchar(100) DEFAULT NULL,
  `city` varchar(100) DEFAULT NULL,
  `state` varchar(100) DEFAULT NULL,
  `country` varchar(100) DEFAULT NULL,
  `created` datetime DEFAULT NULL,
  `status` int(11) DEFAULT NULL COMMENT '1-New,2-invitation send',
  PRIMARY KEY (`id`),
  KEY `playerLead_status_INDEX` (`status`)
) ENGINE=InnoDB AUTO_INCREMENT=510 DEFAULT CHARSET=latin1;

EXPLAIN SELECT email_id,id,NULL,first_name,last_name,NULL,state,city,NULL,(2)作为类型FROM bcs_player_lead WHERE status ='1'

id | select_type | table | type | possible_keys | key | key_len | ref | rows | Extra
1 | SIMPLE | bcs_player_lead | ALL | playerLead_status_INDEX | {null} | {null} | {null} | 458 |在哪里使用

bcs_player_lead有两个键 -

  • 主要ID
  • playerLead_status_INDEX的状态
  • 提前致谢!


    我不是DBA,但AFAIK,即使有索引,也不会使用索引:当表统计信息没有更新(OR)时,可能检索的行数少于@Leo所说的(因为在你的情况下只有458行要检索)。

    您可以使用FORCE INDEX (index_name)强制使用索引。 尝试一次,并检查解释EXPLAIN PLAN

    SELECT email_id,id,NULL,first_name,last_name,NULL,state,city,NULL,(2) as type 
    FROM bcs_player_lead 
    FORCE INDEX (playerLead_status_INDEX)
    WHERE status='1'
    

    一旦MySQL不使用WHERE IN子句中的索引,你可能想检查这篇文章吗?

    链接地址: http://www.djcxy.com/p/25085.html

    上一篇: Mysql Index is not working

    下一篇: MySQL Explain vs Slow Log