相关疑难解决方法(0)

SQL为什么SELECT COUNT(*),MIN(col),MAX(col)比SELECT MIN(col),MAX(col)更快

我们看到这些查询之间存在巨大差异.

慢查询

SELECT MIN(col) AS Firstdate, MAX(col) AS Lastdate 
FROM table WHERE status = 'OK' AND fk = 4193
Run Code Online (Sandbox Code Playgroud)

表'表'.扫描计数2,逻辑读取2458969,物理读取0,预读取读取0,lob逻辑读取0,lob物理读取0,lob预读读取0.

SQL Server执行时间:CPU时间= 1966 ms,已用时间= 1955 ms.

快速查询

SELECT count(*), MIN(col) AS Firstdate, MAX(col) AS Lastdate 
FROM table WHERE status = 'OK' AND fk = 4193
Run Code Online (Sandbox Code Playgroud)

表'表'.扫描计数1,逻辑读取5803,物理读取0,预读取读取0,lob逻辑读取0,lob物理读取0,lob预读读取0.

SQL Server执行时间:CPU时间= 0 ms,已用时间= 9 ms.

查询之间巨大的性能差异之间的原因是什么?

更新 基础上给出意见的问题小更新:

执行顺序或重复执行不会改变性能.没有使用额外的参数,并且(测试)数据库在执行期间没有执行任何其他操作.

慢查询

|--Nested Loops(Inner Join)
 |--Stream Aggregate(DEFINE:([Expr1003]=MIN([DBTest].[dbo].[table].[startdate])))
   |    |--Top(TOP EXPRESSION:((1)))
   |         |--Nested Loops(Inner Join, OUTER REFERENCES:([DBTest].[dbo].[table].[id], [Expr1008]) WITH ORDERED PREFETCH)
   |              |--Index …
Run Code Online (Sandbox Code Playgroud)

sql sql-server statistics performance correlation

15
推荐指数
1
解决办法
1万
查看次数

标签 统计

correlation ×1

performance ×1

sql ×1

sql-server ×1

statistics ×1