Sql server 将一张大桌子拆分为小桌子
我在MicrosoftSQLServer2008R2中有一个表,它有100000条记录 我需要将其拆分为10个表,每个表包含10k条记录。我不想对该表进行分区,但要将其完全拆分为10个不同的表。是否可能?您可以使用NTileSql server 将一张大桌子拆分为小桌子,sql-server,tsql,Sql Server,Tsql,我在MicrosoftSQLServer2008R2中有一个表,它有100000条记录 我需要将其拆分为10个表,每个表包含10k条记录。我不想对该表进行分区,但要将其完全拆分为10个不同的表。是否可能?您可以使用NTile ;with cte as ( select ntile(10) over (order by somepk column) as somecol ,* from table ) select * from cte where n=1--change n value to
;with cte
as
(
select ntile(10) over (order by somepk column) as somecol
,* from table
)
select * from cte where n=1--change n value to get each partition
选择*
进入新世界1
从旧图博
如果行>=1和行=10001以及行=90001和行100000记录非常小,为什么需要将其拆分为多个表?就分析而言,即使是1亿美元也是可以的,这可能吗?@Aparma?当然这是可能的,但如果您需要从多个表中进行选择,将来会使每个查询更加困难,效率更低。谢谢@Tim Schmelter的评论。我只是拆分以进行分析,不打算在将来的任何时候合并这些表,正如@TimSchmelter提到的,100000条记录是sql server的小表。如果性能不是问题,您可以考虑使用视图拆分它,而不是在2008中引入表窗口函数。
SELECT *
INTO new_tb1
FROM old_tb
WHERE row >= 1 AND row<= 10000;
SELECT *
INTO new_tb2
FROM old_tb
WHERE row>= 10001 AND row<= 20000;
.
.
.
.
.
SELECT *
INTO new_tb3
FROM old_tb
WHERE row>= 90001 AND row<= 100000;