111,092
社区成员




public static void INITIAL_DATA_LIST()
{
ANALYSISES.DATA_LIST = new DataTable("DATA_LIST");
ANALYSISES.DATA_LIST.Columns.Add("ID", System.Type.GetType("System.Int32"));
ANALYSISES.DATA_LIST.Columns.Add("R1", System.Type.GetType("System.Int32"));
ANALYSISES.DATA_LIST.Columns.Add("R2", System.Type.GetType("System.Int32"));
ANALYSISES.DATA_LIST.Columns.Add("R3", System.Type.GetType("System.Int32"));
ANALYSISES.DATA_LIST.Columns.Add("R4", System.Type.GetType("System.Int32"));
ANALYSISES.DATA_LIST.Columns.Add("R5", System.Type.GetType("System.Int32"));
ANALYSISES.DATA_LIST.Columns.Add("TOTAL_BET", System.Type.GetType("System.Decimal"));
string TYPE_NAME = "";
for (int i = 0; i <= 120; i++)
{
TYPE_NAME = "s";
if (i < 10)
{
TYPE_NAME = TYPE_NAME + "00" + i;
}
else if (i > 9 && i < 100)
{
if (i < 75)
{
TYPE_NAME = TYPE_NAME + "0" + i;
}
else if (i == 75)
{
TYPE_NAME = TYPE_NAME + "0741";
}
else
{
TYPE_NAME = TYPE_NAME + "0" + Convert.ToString(i - 1);
}
}
if (i >= 100)
{
if (99 == i - 1)
{
TYPE_NAME = TYPE_NAME + "099";
}
else
{
TYPE_NAME = TYPE_NAME + Convert.ToString(i - 1);
}
}
ANALYSISES.DATA_LIST.Columns.Add(TYPE_NAME, System.Type.GetType("System.Boolean"));
}
int id = 0;
for (int i = 0; i < 10; i++)
{
for (int j = 0; j < 10; j++)
{
for (int k = 0; k < 10; k++)
{
for (int m = 0; m < 10; m++)
{
for (int n = 0; n < 10; n++)
{
id++;
DataRow dr = ANALYSISES.DATA_LIST.NewRow();
dr["ID"] = id;
dr["R1"] = i;
dr["R2"] = j;
dr["R3"] = k;
dr["R4"] = m;
dr["R5"] = n;
dr["TOTAL_BET"] = 0;
for (int p = 8; p <= 120; p++)
{
dr[p - 1] = false;
}
ANALYSISES.DATA_LIST.Rows.Add(dr);
}
}
}
}
}
ANALYSISES.DATA_LIST.AcceptChanges();
}
--这里只是测试,你要换成你自己的库
USE tempdb
GO
--1. 创建随机表
IF OBJECT_ID('dbo.random') IS NOT NULL DROP TABLE dbo.random
IF OBJECT_ID('dbo.targetUpdate') IS NOT NULL DROP TABLE dbo.targetUpdate
CREATE TABLE dbo.random(id INT PRIMARY KEY)
CREATE TABLE dbo.targetUpdate(id INT PRIMARY KEY, v INT)
--2. 将 10 万条数据顺序插入到随机表
;WITH t1 AS (
SELECT sv.number FROM [master].dbo.spt_values AS sv WHERE sv.type='P' AND sv.number BETWEEN 1 AND 1000
),t2 AS(
SELECT sv.number FROM [master].dbo.spt_values AS sv WHERE sv.type='P' AND sv.number BETWEEN 1 AND 100
)
INSERT INTO random(id)
SELECT ROW_NUMBER() OVER (ORDER BY a.number) AS id
FROM t1 AS a CROSS APPLY t2 AS b
--3. 将 10 万条数据顺序插入到测试的目标表(需要更新的)
INSERT INTO dbo.targetUpdate(id)
SELECT id FROM random
--4. 得到随机的5万条记录,并对应更新目标表中的 5 万条记录
DECLARE @begin DATETIME
SET @begin=GETDATE()
;WITH cte AS(
SELECT TOP 1000000 id FROM random
WHERE id<=50000
ORDER BY NEWID()
), cte2 AS(
SELECT ROW_NUMBER() OVER (ORDER BY (SELECT 1)) AS rid,id FROM cte
)
,tag AS (
SELECT ROW_NUMBER() OVER(ORDER BY id) AS tid,id,v FROM targetUpdate WHERE id BETWEEN 10001 AND 60000
)
UPDATE tag
SET v=cte2.id
FROM cte2
WHERE cte2.rid=tag.tid
SELECT DATEDIFF(ms,@begin,GETDATE()) AS [消耗毫秒数]
/*
消耗毫秒数
320
*/
--查看目标表中已更新过来的记录
SELECT * FROM targetUpdate WHERE id BETWEEN 10001 AND 60000
--这里只是测试,你要换成你自己的库
USE tempdb
GO
--1. 创建随机表
IF OBJECT_ID('dbo.random') IS NOT NULL DROP TABLE dbo.random
CREATE TABLE dbo.random(id INT PRIMARY KEY)
--2. 将 10 万条数据顺序插入到随机表
;WITH t1 AS (
SELECT sv.number FROM [master].dbo.spt_values AS sv WHERE sv.type='P' AND sv.number BETWEEN 1 AND 1000
),t2 AS(
SELECT sv.number FROM [master].dbo.spt_values AS sv WHERE sv.type='P' AND sv.number BETWEEN 1 AND 100
)
INSERT INTO random(id)
SELECT ROW_NUMBER() OVER (ORDER BY a.number) AS id
FROM t1 AS a CROSS APPLY t2 AS b
--3. 得到随机的2万条记录
;WITH cte AS(
SELECT TOP 1000000 id FROM random
WHERE id<=20000
ORDER BY NEWID()
)
SELECT ROW_NUMBER()OVER(ORDER BY (select 1)) AS rid,id AS random FROM cte
--你那个表, 直接用上面的结果更新即可
--本机执行, 产生这2万个随机数都不需要一秒