mysql 0 1 索引_MySQL在检查= 1时不使用索引,但在= 0时使用它

这是我遇到的一个令人困惑的问题:

Query:

EXPLAIN SELECT id,hostname FROM queue_servers WHERE live=1

id select_type table type possible_keys key key_len ref rows Extra

1 SIMPLE queue_servers ALL live NULL NULL NULL 6 Using where

Query:

EXPLAIN SELECT id,hostname FROM queue_servers WHERE live=0

id select_type table type possible_keys key key_len ref rows Extra

1 SIMPLE queue_servers ref live live 1 const 1

SHOW INDEXES FROM queue_servers

Table Non_unique Key_name Seq_in_index Column_name Collation Cardinality Sub_part Packed Null Index_type

queue_servers 1 live 1 live A 6 NULL NULL BTREE

有任何想法吗?这让我变得疯狂..如果我只是尝试选择这样一个列:

EXPLAIN SELECT id FROM queue_servers WHERE live=1

它工作正常..但如果我尝试选择列“hostname”,或将其添加到选择列列表,它将不会使用实时索引,除非我搜索live = 0 ..为什么这样?

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值