用于预订事物的事务性数据库...
我们的供应商被要求用@tablevariables 替换#temptables(因为编译锁很重),但他们用一个实际的表来替换,该表将SPID 添加为一列,以确保存储过程只作用于适用的行。
您认为这种操作方法有什么风险吗?在所有事务都被隔离在他们自己的事务中之前......我担心我们最终可能会锁定这个表,但他们的意见是 SQL 使用行级锁定,这不会创建更多的锁。
SQL Server 版本:2016 企业版 - 13.0.5216.0
CREATE TABLE dbo.qryTransactions (
ID int IDENTITY (0,1) NOT NULL CONSTRAINT pk_qryTransactions PRIMARY KEY CLUSTERED,
spid int NOT NULL,
OrderID int,
ItemID int,
TimeTransactionStart datetime,
TimeTransactionEnd datetime,
...other fields
)
CREATE INDEX idx_qryTransactions_spidID ON qryTransactions (spid, ID) INCLUDE (ItemID, OrderID, TimeTransactionStart, TimeTransactionEnd)
Run Code Online (Sandbox Code Playgroud) sql-server stored-procedures sql-server-2016 enterprise-edition table-variable