Sql server 2008 如何优化存储过程

Sql server 2008 如何优化存储过程,sql-server-2008,stored-procedures,Sql Server 2008,Stored Procedures,我想知道是否有方法可以优化和提高此存储过程的性能。我是个新手,非常感谢你的帮助 这个程序是我从以前的程序员那里继承的 SET ANSI_NULLS ON GO SET QUOTED_IDENTIFIER ON GO ALTER PROCEDURE [dbo].[spDailyWorkConfB] @datew DATETIME AS BEGIN SET NOCOUNT ON; ;WITH tmpTable AS ( SELECT Id

我想知道是否有方法可以优化和提高此存储过程的性能。我是个新手,非常感谢你的帮助

这个程序是我从以前的程序员那里继承的

SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO

ALTER PROCEDURE [dbo].[spDailyWorkConfB]    
    @datew DATETIME
AS
BEGIN
    SET NOCOUNT ON;

    ;WITH tmpTable AS 
    (
        SELECT IdRealizare,Adresa, CONVERT(char(2), Data, 108) as Ora
        FROM Butoane
        WHERE (IdRealizare <> 0) AND (DAY(butoane.Data) = DAY(@datew)) AND (MONTH(butoane.Data) = MONTH(@datew)) AND (YEAR(butoane.Data) = YEAR(@datew)) 
    )

    SELECT *, COUNT(*) AS Qty INTO #tblOne
    FROM tmpTable
    GROUP BY IdRealizare,Adresa,Ora
    HAVING COUNT(*) >=1
    ORDER BY Ora

    SELECT Masini.Linie , Masini.CodMasina, Operatii.CodOperatie, Angajati.Angajat, Comenzi.NrComanda,Articole.Articol,
            OperatiiArticol.BucatiButon,Operatii.Operatie,OperatiiArticol.BucatiOra, Masini.Grup, #tblone.Ora, #tblOne.Qty, Realizari.Id, Operatii.PozRaport, Angajati.IdSector, Realizari.LastWrite,
            Articole.Stagione

    INTO #tblFOR
            FROM Realizari 
                        INNER JOIN Masini ON Realizari.IdMasina = Masini.Id 
                        INNER JOIN Angajati ON Realizari.IdAngajat = Angajati.Id
                        INNER JOIN Comenzi ON Realizari.IdComanda = Comenzi.Id 
                        INNER JOIN Operatii ON Realizari.IdOperatie = Operatii.Id
                        INNER JOIN Articole ON Comenzi.IdArticol = Articole.Id
                        INNER JOIN OperatiiArticol ON Comenzi.IdArticol = OperatiiArticol.IdArticol AND Operatii.id = OperatiiArticol.IdOperatie    
                        INNER JOIN #tblOne ON #tblOne.IdRealizare=Realizari.Id 

    SELECT * FROM #tblFOR WHERE Qty>0 AND IdSector='1' AND Linie in ('LINEA1','LINEA2','LINEA3','LINEA4','LINEA5','LINEA6','LINEA7','LINEA8','LINEA9','LINEA10','LINEA11','LINEA12') ORDER BY Realizari.Id 
 END
如果有人有什么想法,我想听听。
谢谢,致以最诚挚的问候。

一个提示是,您应该在加入查询中使用NOLOCK。由于此过程基本上是为了显示数据而构建的,因此在其他查询对这些表执行更新时,最好是获取未提交的数据,而不是创建死锁