下面是一个令人费解的问题:EXPLAIN SELECT id,hostname FROM queue_servers WHERE live=1
EXPLAIN SELECT id FROM queue_servers WHERE live=1
效果很好..。但是,如果我尝试选择列"hostname“,或者将其添加到select列列表中,它将不会使用活动索引,除非我正在搜索live=0。为什么会这样呢?
背景:我使用Mysql,有数百万的数据,每行有20列,我们有一些复杂的搜索和一些列使用模糊匹配,例如username like '%aaa%',它不能使用mysql索引,除非删除第一个%,但是我们需要模糊匹配来做类似Satckoverflow搜索的搜索,我也检查了Mysqlfulltext index,但如果使用其他索引,它不支持在一个sql中进行复杂的搜索。我的解决方案是:添加Elasticse