Sql server 是否需要在分区方案上创建对象?
我一直在学习一些SQLServer表分区教程,但似乎找不到所有方面如何结合在一起的概述或解释 我有一个现有的表,我想对其进行分区,例如名为“Sql server 是否需要在分区方案上创建对象?,sql-server,tsql,database-partitioning,Sql Server,Tsql,Database Partitioning,我一直在学习一些SQLServer表分区教程,但似乎找不到所有方面如何结合在一起的概述或解释 我有一个现有的表,我想对其进行分区,例如名为“Orders” 所以我在订单表上创建了我的分区函数 然后在分区函数的顶部创建分区方案 这是否意味着,如果我在表1中插入,它现在将自动分区? 或者哪一部分我不理解,在教程中有以下内容: --****************** --6. CREATE OBJECTS ON THE PARTITION SCHEME --***********
Orders
”
所以我在订单表
上创建了我的分区函数
然后在分区函数的顶部创建分区方案
这是否意味着,如果我在表1中插入,它现在将自动分区?
或者哪一部分我不理解,在教程中有以下内容:
--******************
--6. CREATE OBJECTS ON THE PARTITION SCHEME
--******************
--Create a partitioned heap... yep, you can do that!
CREATE TABLE OrdersDaily (
OrderDate DATETIME2(0) NOT NULL,
OrderId int IDENTITY NOT NULL,
OrderName nvarchar(256) NOT NULL
) on DailyPartitionSceheme(OrderDate)
GO
据我所知,他们实际上是在创建一个重复的表,但将其作为一个对象放在分区方案的顶部。我必须这样做吗?对已经存在的未分区表进行分区很棘手,不一定推荐这样做。我不确定您现有的表有多大,或者有多少表可能已经有外键引用它,等等,所以YMMV。我想到了两种可能的方法: I.改为以分区视图的方式进行旧式学习 或 二,。 1.创建一个最初只有一个分区的分区函数,例如: CREATE PARTITION FUNCTION OrdersFunction (datetime2) AS RANGE LEFT FOR VALUES (); 创建分区函数OrdersFunction(datetime2)作为值()的剩余范围;
考虑阅读文档了吗?教程很少解释基础知识,而文档正是这种情况发生的地方。还有-没有使用的分区方案有什么用?如果没有对象使用它,它只是无用的元数据。常识上说,为了获得表分区的好处,你必须对表进行分区。您不能只在表中对数据进行分区,您需要创建一个新表并在其上创建分区,然后将所有数据输入该表。这样sql就可以决定哪些行属于哪个分区了吗?是的,这是正确的。将旧表上的任何依赖项重构为新表后,可以删除旧表。 CREATE PARTITION SCHEME DailyPartitionScheme AS PARTITION OrdersFunction TO ([PRIMARY]); ALTER TABLE Orders SWITCH TO OrdersDaily PARTITION 1