2015-09-07 83 views
0

下面有一个mysql Person表。编号是主要的,编入索引。但其他各列没有索引..在哪里``条件计数影响在mysql中选择速度?

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 ... 

你能告诉我哪一个会更快?

+1

根据您的数据和索引,如果可以使用更好的索引,后者可能会更快。 – vhu

回答

1

没有索引,任何WHERE子句都会导致表扫描。也就是说,为了满足查询,服务器必须检查表中的每一行。因此,您显示的搜索操作按照相同时间的顺序进行。

从MySQL服务器向客户端发送大型结果集也需要时间。结果集中较少的行可以更快地满足您的查询。

专业提示:在大约100行长的表上处理时,避免使用SELECT *。而是给出你实际需要的列的名字。