标签: sql-execution-plan

SQL执行计划有排序

我正在使用 AdventureWorks 数据库,运行以下查询:

-- 9
select *
from Production.ProductModel
where not exists
(
    select 1
    from Production.Product
    where Production.Product.ProductModelID = Production.ProductModel.ProductModelID
);
Run Code Online (Sandbox Code Playgroud)

我返回了 9 条记录,这是正确的,但是当我检查执行计划时,我看到已经完成了排序:

在此输入图像描述

在此输入图像描述

为什么要进行排序?它来自内部查询吗?

sql sql-server sql-execution-plan

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

SQL Server 2008:单个sql语句的性能开销

我有2个存储过程,我想比较并确定哪些需要更少的资源并且性能更好.第二个过程是对第一个过程的修改,它包含第一个过程的略微更改的sql语句.我的目标是了解更改对查询成本的影响.

为此,我使用"包含实际执行计划"选项单独执行每个过程并分析两个执行计划.我的问题是我不能说哪个sql查询以简单的方式表现得更好.

例如,考虑以下第一个存储过程的查询执行计划:

在此输入图像描述

该计划显示查询成本相对于批次0%,Clustered Index Seek运算符相对于查询为100%.对于第二个过程的相应查询,我有相同的数字.不幸的是,这还不足以理解哪个查询具有最小的成本.

因此,我的问题是:有没有办法确定整个查询的成本.最好的是带有查询的表及其特定成本,例如CPU成本或I/O成本.

sql-server performance sql-server-2008 sql-execution-plan

0
推荐指数
1
解决办法
3566
查看次数

SQL实际上如何在内存中运行?逐行

SQL如何实际运行?

例如,如果我想查找一行row_id=123,SQL查询会从内存顶部逐行搜索吗?

sql sql-execution-plan

0
推荐指数
1
解决办法
193
查看次数

Oracle SQL EXPLAIN PLAN - 全表访问

我有一个连接了 5 个表的查询,它的执行时间约为 0.2 秒,从我的数据库中检索 36 条记录。下面附上解释计划的分析,可以看到即使那些已经带有索引的表仍然会发生全表访问。

Exlpian计划

无论如何,如果有必要按如下方式微调查询?

SELECT 

  CASE WHEN DS.NAME = 'InteractiveCustomer' THEN 'NA' ELSE CUS.SOURCE_SYSTEM END AS SOURCE_SYSTEM, 
  OU.ORGUNIT_CODE AS ORGANIZATION_UNITS, 
  SUM(
    CASE WHEN WS.NAME = 'Pending Autoclosure' THEN 1 ELSE 0 END
  ) AS PENDING_AUTOCLOSURE, 
  SUM(
    CASE WHEN WS.NAME = 'New' THEN 1 ELSE 0 END
  ) AS NEW, 
  SUM(
    CASE WHEN WS.NAME = 'Under Investigation' THEN 1 ELSE 0 END
  ) AS UNDER_INVESTIGATION, 
  SUM(
    CASE WHEN WS.NAME = 'Escalated' THEN 1 ELSE 0 END
  ) …
Run Code Online (Sandbox Code Playgroud)

sql oracle sql-execution-plan

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