简单的SELECT表现不佳

时间:2018-10-08 14:37:52

标签: sql-server tsql query-performance

enter image description here我有一个非常简单的SELECT语句,该语句花费的时间要多得多。它仅从一个没有JOIN,没有计算列的表中选择。该表不是特别大(300万行,行很小)。我有一个适合查询的索引(SQL Profile显示正在使用它),该索引最近(每周)被重建并且统计信息是最新的(每天)。我尝试将SELECT放入存储过程中,但这无济于事。我也尝试使用WITH(NOLOCK),但是并没有太大的改进。它经常但不被大量查询-它不在我们应用程序的前50个查询中。结果大小通常为1-5行。此表上也有相当数量的INSERT / UPDATE流量,比SELECT流量少一点。

带有SELECT的存储过程是:

CREATE PROCEDURE [dbo].[fetchcurrentichecklistitemanswers] @p_ichecklistitemid Int
AS

DECLARE @ichecklistitemid Int = @p_ichecklistitemid

SELECT * FROM ichecklistitemanswers WITH (NOLOCK) WHERE ichecklistitemid = @ichecklistitemid AND status = 2 ORDER BY ordering ASC

GO

是否有其他想法会降低像这样的简单SELECT的速度?

[编辑-添加执行计划]查询在Management Studio(即时)中运行很快,但是在应用程序中,查询时间平均超过1秒。

1 个答案:

答案 0 :(得分:1)

您可以在该列上添加索引:

CREATE INDEX idx ON ichecklistitemanswers(ichecklistitemid)
INCLUDE(status, ordering) WHERE status=2;