SQL Server较小的日期范围冻结服务器
因此,我们有一个SQL Server语句来选择特定商户在给定时间段内的销售额。这适用于任何较大的日期范围、整月、多月,甚至是从2月或更早的几周或几天这样的短期 然后,当我们想要查询一个小的日期范围时,比如示例中给出的5月份的几天,服务器利用率将达到100%,并将所有内容冻结。这种情况发生在3月、4月和5月的任何小日期范围内,但在此之前不会发生 这可能与索引有关,因为这些是较新的条目吗SQL Server较小的日期范围冻结服务器,sql,sql-server,Sql,Sql Server,因此,我们有一个SQL Server语句来选择特定商户在给定时间段内的销售额。这适用于任何较大的日期范围、整月、多月,甚至是从2月或更早的几周或几天这样的短期 然后,当我们想要查询一个小的日期范围时,比如示例中给出的5月份的几天,服务器利用率将达到100%,并将所有内容冻结。这种情况发生在3月、4月和5月的任何小日期范围内,但在此之前不会发生 这可能与索引有关,因为这些是较新的条目吗 SELECT CAST(tx.tx_sales_amount AS money) AS tx_sales_
SELECT
CAST(tx.tx_sales_amount AS money) AS tx_sales_amount,
tx.LID AS loc_id,
tx.tx_date,
tx.tx_type,
tx.tx_clerk_number,
ISNULL(
LTRIM(
RTRIM(tx.tx_checknum)
),
'n/a'
) AS tx_checknum,
tx.card_number,
tx_item,
tx.member_id,
gp.gift_prg_name,
gpl.gift_pid,
l.location_name AS location
FROM
tblTransactions tx
INNER JOIN tblLocations l ON tx.MID = l.MID
AND tx.LID = l.LID
INNER JOIN tblTerminals t ON tx.MID = t.MID
AND tx.LID = t.LID
AND tx.TID = t.TID
INNER JOIN tblGift_Program_Lookup gpl ON t.id_pk = gpl.TID_fk
INNER JOIN tblPrograms_Gift gp ON gp.gift_pid = gpl.gift_pid
INNER JOIN tblCards c ON tx.card_number = c.card_number
AND c.card_gift_pid = gp.gift_pid
WHERE
tx.tx_type IN ('10', '50')
AND tx.MID = '0199'
AND tx.tx_void = 0
AND l.location_active = 1
AND LEFT(tx.card_number, 4) IN (
SELECT
card_prefix
FROM
tblCard_Types
WHERE
card_type IN ('Gift', 'Multi')
)
AND tx.tx_date BETWEEN '2014-05-01 22:00:00'
AND '2014-05-07 20:59:59'
ORDER BY
l.location_name,
tx.tx_type,
gpl.gift_pid,
LEFT(c.card_number, 6),
tx.tx_date DESC,
tx_clerk_number
为了回答这个问题,我必须对所查询的数据进行一些详细的分析。执行计划是什么样子的?很可能您需要更新统计数据。这被称为提升关键问题,在SQL Server 2014中得到缓解。