在我的USP中,我正在制作临时表并为它们生成ID供以后使用。我的项目要求是我需要生成这些ID。我正在制作临时表并为每条记录生成唯一ID的sql看起来像这样:
SELECT DISTINCT pqt.fkJID,
pqt.FirstDatabaseID,
pqt.pqtPackageID,
RowId = RIGHT('000000' + Ltrim(Str(Row_number() OVER (ORDER BY pqt.fkJID, pqt.fkFirstDatabaseID))), 6)
INTO #PQTIDs
FROM PackageRecord pqt WITH (nolock)
INNER JOIN #CQTIDs cqtS
ON cqtS.fkJID = pqt.fkJID
AND cqtS.FirstDatabaseID = pqt.fkFirstDatabaseID
正如您所看到的那样,对于临时表#PQTIDs,我使用这一行生成一个ID:
RowId = RIGHT('000000' + Ltrim(Str(Row_number() OVER (ORDER BY pqt.fkJID, pqt.fkFirstDatabaseID))), 6)
现在我的问题:我还有其他方法可以为临时表记录生成唯一的顺序记录ID吗?因为我认为当我以这种方式生成ID时,需要花费很多时间。如果创建这样的临时表会影响性能,请告诉我。有没有其他方法来优化这个?