下面是一个mysql Person表。Id是primary,有索引。但是其他列没有索引。
id name surname age city branch
1 John Black 34 London driver
2 Lara Croft 28 New York teacher
3 Ahmad Hasan 41 Doha doctor
...
1000.000......
我的问题是,当我用where
子句与多个条件执行select
查询时,它会降低选择速度吗?
比如哪一个更快?
Select * From Person Where age > 30
或
Select * from Person Where age > 20 AND city = 'London' AND name = 'John' AND branch = 'doctor' AND ...
你能告诉我哪个更快吗?
如果没有索引,任何WHERE
子句都会引起表扫描。也就是说,为了满足查询,服务器必须检查表中的每一行。因此,您所展示的搜索操作的顺序彼此相同。
将一个大的结果集从MySQL服务器发送到客户端也需要时间。结果集中更少的行使得满足查询的那一部分更快。
专业提示:当处理超过100行的表时,避免使用SELECT *。相反,请给出实际需要的列名。