max与top的效率
打开一个统计的页面,等了差不多两分钟,时间也确实太久了,虽然统计是复杂点,只不过应该没有这么慢才是,今天认真的把sql语句查看了一下,将写的top修改为max,统计页面的呈现时间就只有几十秒,问题终于解决了。。。
部分sql得代码如下:
1select max ( VaryDate ) from tbl_b_Projectinfo p
2inner join tbl_b_sonItems s on p.SubItemID = s.SubSupeID
3inner join ItemPrjVaryHistory h on h.ItemPrjId = p.ProjectID and VaryType='工程完工'
4where s.supeid = @Supeid
2inner join tbl_b_sonItems s on p.SubItemID = s.SubSupeID
3inner join ItemPrjVaryHistory h on h.ItemPrjId = p.ProjectID and VaryType='工程完工'
4where s.supeid = @Supeid
1select top 1 VaryDate from tbl_b_Projectinfo p
2inner join tbl_b_sonItems s on p.SubItemID = s.SubSupeID
3inner join ItemPrjVaryHistory h on h.ItemPrjId = p.ProjectID and VaryType='工程完工'
4where s.supeid = @Supeid order by VaryDate desc
2inner join tbl_b_sonItems s on p.SubItemID = s.SubSupeID
3inner join ItemPrjVaryHistory h on h.ItemPrjId = p.ProjectID and VaryType='工程完工'
4where s.supeid = @Supeid order by VaryDate desc
max返回表达式得最大值,TOP 子句限制返回到结果集中的行数。
差别在于top对结果集还要进行排序,简单的max和top 1是感觉不出的速度的,当数据量大之后,两者的差别就越明显,当然,如果字段设置索引的话情况或许就有所不同,效率上也许会一样,具体没有做过这个测试,所以在这种情况下我们最好用max而不是top 1,这样程序的执行效率,运行成本才会降的最低。。。