回答

收藏

使用WHILE创建虚拟数据

技术问答 技术问答 131 人阅读 | 0 人回复 | 2023-09-13

我试着在我的表中插入一些虚拟数据。WHILE,但它的运行速度确实很慢。
! w. g7 s, x6 D1 l6 o我在想,也许我写的代码不正确,请看看并确认吗?
3 I8 f( P0 t; }( h, d9 x4 {2 o. E-- Insert dummy dataDECLARE    @i          int,   @Content    int;SET @i = 5001;WHILE @i > 5000 AND @i 如果只插入所有499行行一次,您将获得比在循环中执行4999个单独的插入句更好的性能。所以,如果你的手表#T包含4999行,则只需调用以下命令:
( |- ]  i6 A5 e; c* Y/ t) KINSERT INTO DBO.CmsImagesContents(ContentId,Title,AltTag,Caption)    SELECT (ABS(CAST(CAST(NEWID() AS VARBINARY) AS INT))   5000AS ContentID,     Test Title' AS Title,'Test AltTag' AS AltTag,'Test Caption'  AS CaptionFROM #T1如果您首先需要创建一个包含4999行的表,请创建以下表格SQL为您工作:$ d: |# G. J+ U
CREATE TABLE #T1(    N INT NOT NULL PRIMARY key);WITH L0 AS (SELECT 1 AS N UNION ALL SELECT 1),    L1 AS (SELECT A.N FROM L0 AS A CROSS JOIN L0 AS B),   L2 AS (SELECT A.N FROM L1 AS A CROSS JOIN L1 AS B),   L3 AS (SELECT A.N FROM L2 AS A CROSS JOIN L2 AS B),   L4 AS (SELECT A.N FROM L3 AS A CROSS JOIN L3 AS B),   Nums AS (SELECT ROW_NUMBER() OVER (ORDER BY (SELECT NULL)) AS n FROM L4)INSERT INTO #T1( N )SELECT NFROM NumsWHERE n 5000;
分享到:
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则