我有两条表SERIALNUMBER,组织为什么我的查询速度太慢SQL Server 2005中
create table org(
org_id INT NOT NULL IDENTITY(1,1)PRIMARY KEY CLUSTERED,
orgName VARCHAR(10)
)
create table serialNumber(id INT NOT NULL IDENTITY(1,1)PRIMARY KEY CLUSTERED,
org_id INT FOREIGN KEY REFERENCES org,
serialNumber BIGINT,
transferedStatus INT DEFAULT(0),
parentID INT NULL FOREIGN KEY REFERENCES serialNumber)
insert into org values('ORG A')
insert into org values('ORG B')
insert into org values('ORG C')
insert into org values('ORG D')
insert into org values('ORG E')
insert into serialNumber values(1,123456100,0,NULL)
insert into serialNumber values(1,123456101,0,NULL)
insert into serialNumber values(1,123456102,0,NULL)
insert into serialNumber values(1,123456103,0,NULL)
insert into serialNumber values(1,123456104,0,NULL)
insert into serialNumber values(1,123456105,0,NULL)
我想从一个ORG转移SERIALNUMBER(123456100)为org B和标记 它作为转移 transferedStatus = 0 (有货) transferedStatus = 1(缺货)
这是我的查询它的工作,但它太慢,当我想要传输大量的serialNumber(10K)...我知道有其他的方式来做它但如何?!
declare @parentID int
declare @From_org_id int
declare @To_org_id int
declare @serialNumber BIGINT
set @From_org_id = 1
set @To_org_id = 2
set @serialNumber = 123456101
/* mark the serialNumber as transfered */
UPDATE serialNumber
set
transferedStatus = 1
Where
org_id = @From_org_id
AND serialNumber = @serialNumber
/* find ID of the source of Serial Number */
select TOP 1 @parentID = id
FROM serialNumber
Where org_id = @From_org_id
AND transferedStatus = 1
AND serialNumber = @serialNumber
ORDER BY id DESC
insert into serialNumber values(@To_org_id,@serialNumber,0,@parentID)
你的桌子上有什么样的指数? – 2013-03-25 10:03:20
两个索引1:NONCLUSTERED(org_id asc,serialNumber asc)2:NONCLUSTERED(org_id asc,transferedStatus asc,serialNumber asc) – 2013-03-25 10:58:57