繁体   English   中英

MySQL select语句没有使用索引

[英]MySQL select statement is not using the index

我有一个名为T的表。它有4个属性:x,y,z和w。

我在表中加载了数据。 然后,在x上创建索引,在y上创建另一个索引。

现在,当我提交此查询时:

select count(*) from T where x <= 10 and y <=100;

我假设将使用索引x和索引y。

但是,这不会发生!

当我在select语句之前使用命令EXPLAIN时,它将索引x和y显示为“ possible_keys ”,而在“ key ”列下则为NULL。 这意味着没有使用索引。

现在,如果我提交此查询:

select count(*) from T where x<=50;

然后MySQL使用索引x,如EXPLAIN命令所示。

那么,条件中的AND是否会阻止使用索引或者我在这里做错了什么?

问候!

您需要将x和y索引在一起,更多信息请访问: http//dev.mysql.com/doc/refman/5.5/en/multiple-column-indexes.html

您只需运行此查询:

ALTER TABLE `your_table_name_here` 
ADD INDEX `IDX_COMB_XY` (`x` ASC, `y` ASC) ;

现在运行Explain,您将看到将使用IDX_COMB_XY。

MySQL在查询中每个表只能使用1个索引。 当有多个索引可供选择时,MySQL将根据基数,内存要求,记录数等,采取有根据的猜测,哪一个最有益。

@ Mojtaba的答案解释了如何创建MySQL将在您的场景中使用的多列索引。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM