我有一个应用程序,它使用Microsoft SQL Server 2012存储从文档中提取的信息和文本等。单个表(我们称之为“Docs”)存储大部分此类信息,并具有“状态”字段,用于确定记录在应用程序中的位置。此“状态”字段可以具有各种值,但实质上决定了文档在应用程序的整个生命周期中出现的界面。 Docs表可以根据写入其中的项目数量而显着增长。我们在表中有各种字段,包含在全文索引中。我们目前没有为此表设置任何分区方案,但是想要探索实现分区是否会提供任何性能优势,主要与各种UI执行的查询有关。
让我们举一个数据库的示例,该数据库在Docs表中有3500万条记录,相当于Docs表的总数据库大小不到2TB,数据大小为1.5TB。最初,它们具有相同的“状态”值(假设它为“1”)并且只能通过UI 1进行查询。当用户使用记录时,“状态”字段更新为“2”,使它们成为在UI 2中可用。
我们希望提高在UI 2中执行的查询的响应性,并且正在考虑基于“status”字段实现分区方案。在查询数据库时,UI 2将始终包含WHERE状态= 2.我对表分区的理解是,如果我们根据状态对表进行分区,系统将只需查询项并从filgroup存储记录中检索数据那个地位。
我们有一个场景,用户在Docs表中输入了3500万条记录,但是对全文索引运行查询会导致UI 2超时。所以,我的问题是,表分区是否会提高在UI 2中执行的查询的响应能力?另外,如果我们在分区表上创建了全文索引,那么全文索引是否会存储在分区表中(即单独存储,从而提高全文查询响应能力),或者SQL Server仍然需要查询整个索引-text索引(在本例中为500GB)?