2015-12-09 76 views
0

我有一个关于SQL扫描性能的问题。没有索引存在。分析SQL扫描性能

select id from customer where age <45; 
select id from customer where salary >40,000; 
select id from customer where sex = 'Male'; 

运行时间是22.136,87.435,132.242ms。他们都毁了10次,并取平均水平。

我的问题:1.为什么第一个查询显着快于第二个查询,因为它们都执行扫描。 2.为什么第三个是最慢的?这是因为它与字符检查有关吗? 3.我应该考虑哪些因素?

赞赏理论水平的答案(因为在工程中有太多的随机事件)。

+0

你对这些列有任何索引吗?你有没有试过对这些查询使用'EXPLAIN'来查看执行计划? –

+0

没有索引存在。 –

+0

我使用'/ timing'而不是'EXPLAIN'。后者是否输出估计时间?我注意到估计的时间比'/ timing'短得多。 –

回答

2

这三个查询都应该有相同的执行计划。对于详细的时间安排,您应该确保缓存未初始化。

假设您的计时正确,它们可能是由返回的数据集的大小驱动的。返回的数据量越大,查询可能需要的时间越长。