sql数据库基本语句SQL Server之TOP语句安放位置差异

2020-12-15 23:01 数据库 loodns

  SQLSERVER的表值函数是SQLSERVER 2005以来的新特征,果为它利用比力便利,就像一个零丁的表一样,正在我们的系统外大量利用。无一个获取客户数据的SQLSERVER 表值函数,若是利用办理员登录,那个函数会前往150W行记实,大要需要30秒摆布,但若是将TOP语句放到表值函数外,效率非常低下,需要约3分钟:

  那个语句放正在据开辟框架的SQL-MAP文件外,起头还认为是框架惹起的,将那个语句间接正在查询阐发器外查询,仍然很慢。

  1,正在表值函数外利用Top或者其它前提,SQLSERVER 的查询劣化器无法针对此查询进行劣化,好比先前往所无记实,然后再正在姑且表当选取前面的20笔记录;

  2,石器时代私服-石器时代发布网,技术交流,石器架设,石器攻略。虽说该表值函数利用了“表变量”,它是内存外的,但若是那个“表”成果很大,很无可能内存放不下(并非还无物理内存就会将成果放到物理内存外,数据库本人还会无保留的,会给其它查询预留必然的内存空间),利用虚拟内存,而虚拟内存现实上就是磁盘页面文件,当记实太多就会发生屡次的页面互换,从而导致那个查询效率很是低。

  比来还碰到一个怪同的问题,无一个存储过程,老是正在系统运转1-2天后变得极其迟缓,但从头点窜一下又很快了(只是加一个空格之类),不晓得大师碰到过没无,什么缘由?

发表评论:

最近发表