SQL Server选择查询非常慢

时间:2019-05-31 06:42:35

标签: sql-server

enter image description here我有直接表,具有200万条记录,而在SQL查询生成器中运行select语句时,这是非常快的,但是通过程序,要花费1100分钟的记录需要35分钟。我有两列icnoefpno。这两列都有重复的记录。我的表有一个聚集索引和一个包含icnoefpno的非聚集索引。

请检查我的查询和建议。

SELECT COUNT(*)
INTO p_count
FROM ct_rgpldgr
WHERE ctrgp_nric = p_ctegd.ctegd_nric
  AND ctrgp_epfno = p_ctegd.ctegd_epfno
加载文件中的

ctrgp_nric,ctrgp_epfno。该查询从.txt文件读取。此nric和epf编号将在加载文件中。

我运行调优顾问和执行平面,但显示估计成本0.03

请咨询

谢谢

1 个答案:

答案 0 :(得分:2)

查询慢的原因多数时候是全表扫描。为了找出这些全表扫描发生的位置,您需要了解查询的执行计划。例如,可以使用Microsoft SQL Server Management Studio完成此操作。

突出显示查询,然后单击以下菜单项,可以在Microsoft SQL Server Management Studio中获得估计的执行计划:

enter image description here

这将显示如下图:

enter image description here

此图在每个节点上都有一个成本估算。与上面突出显示的节点一样,具有高成本的节点尤其令人感兴趣。成本较高的节点主要表示MSSQL正在执行全表扫描的表,并且可能需要在其中添加一些索引。在知道要完全扫描哪些表之后,您将需要找到应在其上建立索引的列,并且该列通常是查询中正在执行内部联接的列。