SQL-SERVER中的USP和CTE性能问题
谁能帮我写一个更好的存储过程 下面的代码花了3个小时运行了5000万条记录SQL-SERVER中的USP和CTE性能问题,sql,sql-server,performance,stored-procedures,Sql,Sql Server,Performance,Stored Procedures,谁能帮我写一个更好的存储过程 下面的代码花了3个小时运行了5000万条记录 下面的USP将进行一些计算,我正试图只保留相同SKU的最低新价格记录。您可以更改程序,只返回每个SKU的最低新价格 CREATE PROCEDURE Usp_conditioncheck @mydate VARCHAR(50) AS SELECT * INTO mytable FROM (SELECT *, NEWPRICE =( spw - ( (
下面的USP将进行一些计算,我正试图只保留相同SKU的最低新价格记录。您可以更改程序,只返回每个
SKU的最低新价格
CREATE PROCEDURE Usp_conditioncheck @mydate VARCHAR(50)
AS
SELECT * INTO mytable
FROM (SELECT *,
NEWPRICE =( spw - ( ( spw * 15 ) / 100 ) ),
rn = Row_number()OVER (partition BY sku ORDER BY ( spw - ( ( spw * 15 ) / 100 ) ) ASC)
FROM table1 CMS
INNER JOIN table2 CRT
ON id = id) A
WHERE rn = 1
SELECT * FROM mytable
现在只需选择每个SKU的NEWPRICE
最低的表即可
CREATE PROCEDURE Usp_conditioncheck @mydate VARCHAR(50)
AS
SELECT * INTO mytable
FROM (SELECT *,
NEWPRICE =( spw - ( ( spw * 15 ) / 100 ) ),
rn = Row_number()OVER (partition BY sku ORDER BY ( spw - ( ( spw * 15 ) / 100 ) ) ASC)
FROM table1 CMS
INNER JOIN table2 CRT
ON id = id) A
WHERE rn = 1
SELECT * FROM mytable
这是存储过程中的查询:
SELECT *
FROM table1 CMS INNER JOIN
table2 CRT
ON ID = ID CROSS APPLY
--------^
(SELECT NEWS = (SPW - ((SPW * 15)/100))) AS C
如果此查询运行,则它正在执行交叉联接
。为什么?如果两个表中都有id
列,则会出现错误(关于不明确的列引用)
我建议您始终使用完全限定的列名——也就是说,对列来自的表使用表别名。我已经编辑了我的问题,查询执行得非常糟糕。请分享你的建议。请任何人在这方面帮助我。