Sql server 将一张大桌子拆分为小桌子

Sql 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

我在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 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;