生成临时表的记录ID耗时

时间:2012-02-10 11:16:01

标签: sql sql-server-2008

在我的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时,需要花费很多时间。如果创建这样的临时表会影响性能,请告诉我。有没有其他方法来优化这个?

0 个答案:

没有答案