mysql中的行是否意味着表没有正确编入索引?

时间:2014-09-17 09:06:13

标签: mysql sql explain

Statemtent:

SELECT * 
FROM `announcements` 
WHERE `website` = 17 
    AND `visible_date` <= '2014-08-05' 
ORDER BY `visible_date` DESC 
LIMIT 1

我希望第一个announcement拥有visible_date收件人而不是2014-08-05。有没有更好的方法呢?

现在,如果我有索引(website, visible_date),我猜MySQL可以使用索引获取第一行而不进行表扫描。

但我rows中的EXPLAIN列显示355行而不是1行。

感谢您的帮助。

1 个答案:

答案 0 :(得分:0)

你是对的,拥有索引会提高查询的性能但是EXPLAIN命令会显示执行计划(如下所述:EXPLAIN)。

为了获得结果,MySQL首先需要选择与WHERE子句相对应的行,然后它只返回第一个结果(LIMIT 1)。

这就是EXPLAIN显示每个匹配结果的原因,LIMIT语句应用于符合条件的结果。

索引用于更快地查找行但不会过滤表格的数据,您可以在此处找到有关索引的更多信息:MySQL Indexes

希望这个解释能帮助你更好地理解索引的概念。