Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sql-server/26.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/actionscript-3/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql server SQL请求。如何让它工作得更快?_Sql Server - Fatal编程技术网

Sql server SQL请求。如何让它工作得更快?

Sql server SQL请求。如何让它工作得更快?,sql-server,Sql Server,我有一个sql请求,执行起来要花很多时间,有什么建议可以加快执行速度吗 DECLARE @Today DATETIME; DECLARE @TwoWeeksAgo DATETIME; SET @Today = GETDATE(); SET @TwoWeeksAgo = DATEADD(DAY, -14, GETDATE()); SELECT TOP ${selectSalesByMall} s.title, s.imageUrl, count(sv.saleid) as mostViewP

我有一个sql请求,执行起来要花很多时间,有什么建议可以加快执行速度吗

DECLARE @Today DATETIME; 
DECLARE @TwoWeeksAgo 
DATETIME; SET @Today = GETDATE();
SET @TwoWeeksAgo = DATEADD(DAY, -14, GETDATE()); 
SELECT TOP ${selectSalesByMall} s.title, s.imageUrl, count(sv.saleid) as mostViewPeriod14Days, s.guid, br.title as brand, s.id as saleId, stm.mallId
FROM dbo.Sales s  
INNER JOIN dbo.KEY_BrandcategoryToSale b_key ON s.id = b_key.saleId 
INNER JOIN dbo.Brands br ON s.BrandId = br.Id 
INNER JOIN dbo.SaleView sv ON s.id = sv.saleId 
INNER JOIN dbo.SalesToMall stm ON s.id = stm.saleId 
LEFT JOIN dbo.SaleView sv2 on sv2.id = sv.id and sv2.userId = ${user['userID']} 
WHERE sv.Date 
BETWEEN @TwoWeeksAgo 
AND @Today 
AND sv2.id IS NULL 
AND s.isActive = 1
AND stm.mallId = ${user['mallId']}
AND br.id != ${user['favBrand']['brandId']}
AND s.id NOT IN (SELECT uess.saleID FROM dbo.UsersEmailsSalesSent uess WHERE uess.userID = ${user['userID']})
GROUP BY s.title, s.imageUrl, s.guid, br.title, s.id, stm.mallId 
ORDER BY mostViewPeriod14Days DESC

一个改进可能是将不存在更改为不存在:

DECLARE @Today DATETIME; 
DECLARE @TwoWeeksAgo 
DATETIME; SET @Today = GETDATE();
SET @TwoWeeksAgo = DATEADD(DAY, -14, GETDATE()); 
SELECT TOP ${selectSalesByMall} s.title, s.imageUrl, count(sv.saleid) as mostViewPeriod14Days, s.guid, br.title as brand, s.id as saleId, stm.mallId
FROM dbo.Sales s  
INNER JOIN dbo.KEY_BrandcategoryToSale b_key ON s.id = b_key.saleId 
INNER JOIN dbo.Brands br ON s.BrandId = br.Id 
INNER JOIN dbo.SaleView sv ON s.id = sv.saleId 
INNER JOIN dbo.SalesToMall stm ON s.id = stm.saleId 
LEFT JOIN dbo.SaleView sv2 on sv2.id = sv.id and sv2.userId = ${user['userID']} 
WHERE sv.Date 
BETWEEN @TwoWeeksAgo 
AND @Today 
AND sv2.id IS NULL 
AND s.isActive = 1
AND stm.mallId = ${user['mallId']}
AND br.id != ${user['favBrand']['brandId']}
AND
NOT EXISTS (SELECT uess.saleID FROM dbo.UsersEmailsSalesSent uess WHERE uess.userID = ${user['userID']} and  s.id=uess.saleID)
GROUP BY s.title, s.imageUrl, s.guid, br.title, s.id, stm.mallId 
ORDER BY mostViewPeriod14Days DESC

索引是否到位?向我们展示执行计划:我正在使用mac os x。我没有这样的工具。您使用什么GUI?${selectSalesByMall}不是有效的t-SQL。请告诉我们我使用NodeJS服务器的整个故事。这是${selectSalesByMall}动态变量