WHERE条件扫描整个表吗?

时间:2016-06-09 12:24:35

标签: mysql sql

在mysql中,在具有数千条记录的表上编写带有WHERE条件的查询,是否会降低服务器或程序的速度?

例如:SELECT * FROM table_name WHERE id = 5;

1 个答案:

答案 0 :(得分:2)

"默认"它会。

一个例外是当列上有索引时。通常,名为id的列将是主键 - 它会生成索引。在这种情况下,查询会非常快。

另一个例外是如果表由id分区。然后只会读取一个分区。

并且,如果查询有limit 1,那么查询将读取表,直到找到匹配为止,然后它将停止。

因此,where子句并不总是扫描整个表。