{"id":2572,"date":"2021-08-04T21:39:20","date_gmt":"2021-08-04T21:39:20","guid":{"rendered":"https:\/\/manualsqlserver.com\/?p=2572"},"modified":"2021-11-02T13:17:14","modified_gmt":"2021-11-02T13:17:14","slug":"particionando-una-tabla-horizontalmente","status":"publish","type":"post","link":"https:\/\/manualsqlserver.com\/?p=2572","title":{"rendered":"Particionando una tabla horizontalmente"},"content":{"rendered":"\n<figure class=\"wp-block-image size-full\"><a href=\"https:\/\/manualsqlserver.com\/wp-content\/uploads\/2021\/08\/ManualSQL_ParticionHorizontalTablas__D.png\"><img loading=\"lazy\" decoding=\"async\" width=\"220\" height=\"260\" src=\"https:\/\/manualsqlserver.com\/wp-content\/uploads\/2021\/08\/ManualSQL_ParticionHorizontalTablas__D.png\" alt=\"\" class=\"wp-image-2573\"\/><\/a><\/figure>\n\n\n\n<h2 class=\"wp-block-heading\"><strong>Particionando una tabla horizontalmente<\/strong><\/h2>\n\n\n\n<p>Las tablas en cualquier base de datos guardan la informaci\u00f3n de los registros, una tabla que tiene muchos registros puede considerarse una tabla cr\u00edtica, aquella que al consultar o buscar registros demore y cause problemas en los sistemas.  Las tablas con muchos registros deben particionarse, para obtener el mejor resultado de la partici\u00f3n la base de datos deber\u00eda tener varios archivos divididos en varios grupos de archivos en varios discos. (Ver Creaci\u00f3n de base de datos). En este art\u00edculo mostramos como crear tablas particionadas horizontalmente donde el campo de partici\u00f3n es la clave primaria y donde no lo es.<\/p>\n\n\n\n<!--more-->\n\n\n\n<p style=\"font-size:18px\"><strong>Para mayor informaci\u00f3n ver<br><\/strong><a href=\"https:\/\/manualsqlserver.com\/?p=141\" target=\"_blank\" rel=\"noreferrer noopener\">Partici\u00f3n horizontal de tablas<\/a><br><a href=\"https:\/\/manualsqlserver.com\/?p=1800\" target=\"_blank\" rel=\"noreferrer noopener\">Particionando horizontalmente una tabla existente<\/a><br><a href=\"https:\/\/manualsqlserver.com\/?p=294\" target=\"_blank\" rel=\"noreferrer noopener\">Insertar registros<\/a><br><a href=\"https:\/\/manualsqlserver.com\/?p=117\" target=\"_blank\" rel=\"noreferrer noopener\">Crear tablas<\/a><br><a href=\"https:\/\/manualsqlserver.com\/?p=158\" target=\"_blank\" rel=\"noreferrer noopener\">\u00cdndices en SQL Server<br><\/a><a href=\"https:\/\/manualsqlserver.com\/?p=1666\" target=\"_blank\" rel=\"noreferrer noopener\">Uso de Include en \u00edndices<br><\/a><a href=\"https:\/\/manualsqlserver.com\/?p=557\" target=\"_blank\" rel=\"noreferrer noopener\">\u00cdndices particionados en SQL Server<br><\/a><a href=\"https:\/\/manualsqlserver.com\/?p=103\" target=\"_blank\" rel=\"noreferrer noopener\">Modificar la base de datos: Grupos de archivos<br><\/a><a href=\"https:\/\/manualsqlserver.com\/?p=106\" target=\"_blank\" rel=\"noreferrer noopener\">Modificar la base de datos: archivos de base de datos<\/a><\/p>\n\n\n\n<script async=\"\" src=\"\/\/pagead2.googlesyndication.com\/pagead\/js\/adsbygoogle.js\"><\/script>\n<ins class=\"adsbygoogle\" style=\"display:block; text-align:center;\" data-ad-layout=\"in-article\" data-ad-format=\"fluid\" data-ad-client=\"ca-pub-2636008503986218\" data-ad-slot=\"1902193434\"><\/ins>\n<script>\n     (adsbygoogle = window.adsbygoogle || []).push({});\n<\/script<\/script>\n\n\n\n<p style=\"font-size:18px\"><strong>Usando la base de datos Northwind<\/strong><\/p>\n\n\n\n<p>use Northwind<br>go<\/p>\n\n\n\n<p style=\"font-size:24px\"><strong>Ejercicios<\/strong><\/p>\n\n\n\n<p style=\"font-size:22px\"><strong>Ejercicio 1<\/strong><\/p>\n\n\n\n<p><strong>Crear una tabla que permita particionar los registros por fecha, de acuerdo a lo siguiente: Registros antes del a\u00f1o 2016, durante el a\u00f1o 2016 y despu\u00e9s del a\u00f1o 2016.<\/strong><\/p>\n\n\n\n<p>Set dateformat dmy<br>go<br><strong>Creamos la funci\u00f3n de partici\u00f3n.<br><\/strong>Create partition function FuncionParticionFecha2016 (Date)<br>As range left for values ('31\/12\/2015','31\/12\/2016')<br>go<br><\/p>\n\n\n\n<p><strong>Como la base de datos Northwind solamente tienen el grupo Primary, se va a ubicar todas las particiones en los archivos de ese grupo de archivos, es conveniente creae mas grupos de archivos para obtener el beneficio de la partici\u00f3n de tablas.<br>Creamos en esquema de partici\u00f3n<\/strong><br>Create partition scheme EsquemaParticionFechas2016<br>as partition FuncionParticionFecha2016<br>to ([Primary],[Primary],[Primary])<br>go<br><\/p>\n\n\n\n<p><strong>Creamos la tabla que luego se va a particionar por el campo de tipo fecha, que no es la clave primaria.<\/strong><br>Create table DividiendoFechas2016<br>(<br>DividiendoFechas2016Codigo nchar(4),<br>DividiendoFechas2016Fecha Date,<br>DividiendoFechas2016Total Numeric(9,2),<br>constraint DividiendoFechas2016PK Primary key (DividiendoFechas2016Codigo)<br>)<br>go<br><\/p>\n\n\n\n<p><strong>Para particionar la tabla de debe crear el \u00edndice particionado (<a href=\"https:\/\/manualsqlserver.com\/?p=557\" target=\"_blank\" rel=\"noreferrer noopener\">Ver \u00cdndices particionados<\/a>)<\/strong><br>Create nonclustered index DividiendoFechas2016IDX<br>on DividiendoFechas2016 (DividiendoFechas2016Fecha)<br>include (DividiendoFechas2016Codigo)<br>on EsquemaParticionFechas2016(DividiendoFechas2016Fecha)<br>go<br><\/p>\n\n\n\n<p><strong>Insertando registros para comprobar las particiones<\/strong><br>insert into DividiendoFechas2016 values<br>('0001','12\/08\/2012',250),('0002','23\/07\/1966',2250),<br>('0003','07\/10\/2016',897.52),('0004','15\/09\/2020',10),<br>('0005','14\/07\/2020',600),('0006','30\/01\/2016',28)<br>go<br><strong>Ver los datos, note que se ha usado la funci\u00f3n $partition para mostrar el n\u00famero de la partici\u00f3n donde se encuentra el registro.<br><\/strong>Select<br>D.DividiendoFechas2016Codigo As 'Codigo',<br>D.DividiendoFechas2016Fecha As 'Fecha',<br>D.DividiendoFechas2016Total As 'Total',<br>$Partition.FuncionParticionFecha2016(DividiendoFechas2016Fecha)<br>As 'Partici\u00f3n'<br>from DividiendoFechas2016 As D<br>go<br>El resultado se muestra en la siguiente imagen<\/p>\n\n\n\n<figure class=\"wp-block-image size-full is-resized\"><a href=\"https:\/\/manualsqlserver.com\/wp-content\/uploads\/2021\/08\/ManualSQL_ParticionHorizontalTablas_01.png\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/manualsqlserver.com\/wp-content\/uploads\/2021\/08\/ManualSQL_ParticionHorizontalTablas_01.png\" alt=\"\" class=\"wp-image-2574\" width=\"566\" height=\"379\" srcset=\"https:\/\/manualsqlserver.com\/wp-content\/uploads\/2021\/08\/ManualSQL_ParticionHorizontalTablas_01.png 393w, https:\/\/manualsqlserver.com\/wp-content\/uploads\/2021\/08\/ManualSQL_ParticionHorizontalTablas_01-300x201.png 300w\" sizes=\"auto, (max-width: 566px) 100vw, 566px\" \/><\/a><\/figure>\n\n\n\n<p style=\"font-size:22px\"><strong>Ejercicio 2<\/strong><\/p>\n\n\n\n<p><strong>Crear una tabla particionada con los meses de 2021<\/strong><\/p>\n\n\n\n<p>Set dateformat dmy<br>go<br>if exists<br>(select 1 from sys.partition_functions<br>where name = 'FuncionParticionMeses2021')<br>Begin<br>Drop partition Function FuncionParticionMeses2021<br>End<br>go<br>Create partition function FuncionParticionMeses2021 (Date)<br>As range right<br>for values ('01\/02\/2021','01\/03\/2021','01\/04\/2021','01\/05\/2021','01\/06\/2021','01\/07\/2021',<br>'01\/08\/2021','01\/09\/2021','01\/10\/2021','01\/11\/2021','01\/12\/2021')<br>go<\/p>\n\n\n\n<p style=\"font-size:18px\"><strong>Agregando mas grupos de archivos a la base de datos Northwind.<\/strong><\/p>\n\n\n\n<p>Alter database Northwind add filegroup Ventas<br>Alter database Northwind add filegroup Recursos<br>Alter database Northwind add filegroup Logistica<br>go<\/p>\n\n\n\n<p style=\"font-size:18px\"><strong>Agregando archivos a los grupos creados<\/strong><\/p>\n\n\n\n<p>xp_create_subdir 'C:\\North'<br>go<br>Alter database Northwind add file (name = 'Viento01', filename='C:\\North\\Viento01.ndf')<br>to filegroup Ventas<br>go<br>Alter database Northwind add file (name = 'Viento02', filename='C:\\North\\Viento02.ndf')<br>to filegroup Recursos<br>go<br>Alter database Northwind add file (name = 'Viento03', filename='C:\\North\\Viento03.ndf')<br>to filegroup Logistica<br>go<\/p>\n\n\n\n<p><strong>Esquema de partici\u00f3n para la tabla de los meses del 2021<br><\/strong>Create partition scheme EsquemaParticionMeses2021<br>as partition FuncionParticionMeses2021<br>to ([Primary],[Primary],[Primary],Ventas,Ventas,Ventas,<br>Recursos,Recursos,Recursos,Logistica,Logistica,Logistica)<br>go<\/p>\n\n\n\n<p><strong>Tabla particionada por meses del 2021<br><\/strong>Create table Meses2021<br>(<br>Meses2021Codigo nchar(4),<br>Meses2021Descripci\u00f3n nvarchar(50),<br>Meses2021Fecha Date,<br>constraint DividiendoMeses2021PK Primary key (Meses2021Codigo)<br>)<br>go<\/p>\n\n\n\n<p><strong>Crear el \u00edndice particionado para la tabla particionada por fechas 2021<br><\/strong>Create nonclustered index Meses2021FechaIDX<br>on Meses2021 (Meses2021Fecha)<br>include (Meses2021Codigo)<br>on EsquemaParticionMeses2021(Meses2021Fecha)<br>go<\/p>\n\n\n\n<p><strong>Insertando registros para comprobar las particiones<\/strong><br>insert into Meses2021 values<br>('0001','Capacitaci\u00f3n SQL Server','12\/08\/2021'),('0002','Certificaci\u00f3n DBA','23\/07\/2021'),<br>('0003','Optimizaci\u00f3n server','07\/10\/2021'),('0004','Socializaci\u00f3n','15\/09\/2021'),<br>('0005','Actualizaci\u00f3n','14\/07\/2021'),('0006','Licenciamiento organizacional','30\/01\/2021')<br>go<br><\/p>\n\n\n\n<p style=\"font-size:18px\"><strong>Ver los datos, incluye una columna para ver la partici\u00f3n donde se encuentra el registro.<\/strong><\/p>\n\n\n\n<p>Select<br>M.Meses2021Codigo As 'Codigo',<br>M.Meses2021Descripci\u00f3n As 'Descripci\u00f3n',<br>M.Meses2021Fecha As 'Fecha',<br>$Partition.FuncionParticionMeses2021(Meses2021Fecha)<br>As 'Partici\u00f3n'<br>from Meses2021 As M<br>go<br>El resultado se muestra en la siguiente imagen<\/p>\n\n\n\n<figure class=\"wp-block-image size-full is-resized\"><a href=\"https:\/\/manualsqlserver.com\/wp-content\/uploads\/2021\/08\/ManualSQL_ParticionHorizontalTablas_02.png\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/manualsqlserver.com\/wp-content\/uploads\/2021\/08\/ManualSQL_ParticionHorizontalTablas_02.png\" alt=\"\" class=\"wp-image-2575\" width=\"734\" height=\"355\" srcset=\"https:\/\/manualsqlserver.com\/wp-content\/uploads\/2021\/08\/ManualSQL_ParticionHorizontalTablas_02.png 537w, https:\/\/manualsqlserver.com\/wp-content\/uploads\/2021\/08\/ManualSQL_ParticionHorizontalTablas_02-300x145.png 300w\" sizes=\"auto, (max-width: 734px) 100vw, 734px\" \/><\/a><\/figure>\n\n\n\n<p style=\"font-size:22px\"><strong>Ejercicio 3<\/strong><\/p>\n\n\n\n<p style=\"font-size:18px\"><strong>Particionar la tabla de Clientes (Customers)<br>Como la tabla Clientes ya existe, debemos crear su Funci\u00f3n de partici\u00f3n, luego el esquema de partici\u00f3n y cambiar el \u00edndice agrupado por indice agrupado particionado. Es importante anotar que la tabla Customers tiene dos relaciones con otras tablas a trav\u00e9s de clave for\u00e1nea (Foreign Key).<\/strong><\/p>\n\n\n\n<p><strong>La funci\u00f3n de partici\u00f3n para los clientes.<\/strong><br>Create partition function FuncionParticionClientes (nchar(5))<br>As range left<br>for values ('E', 'J', 'O', 'T')<br>go<br><strong>Esquema de partici\u00f3n para la tabla Clientes<\/strong><br>Create partition scheme EsquemaParticionClientes<br>as partition FuncionParticionClientes<br>to ([Primary],Ventas,Recursos,Recursos,Logistica)<br>go<br><strong>Ver la estructura de la tabla Customers<\/strong><br>sp_help customers<br>go<br>El resultado se muestra en la siguiente imagen<\/p>\n\n\n\n<figure class=\"wp-block-image size-large is-resized\"><a href=\"https:\/\/manualsqlserver.com\/wp-content\/uploads\/2021\/08\/ManualSQL_ParticionHorizontalTablas_03.png\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/manualsqlserver.com\/wp-content\/uploads\/2021\/08\/ManualSQL_ParticionHorizontalTablas_03-1024x764.png\" alt=\"\" class=\"wp-image-2576\" width=\"839\" height=\"625\" srcset=\"https:\/\/manualsqlserver.com\/wp-content\/uploads\/2021\/08\/ManualSQL_ParticionHorizontalTablas_03-1024x764.png 1024w, https:\/\/manualsqlserver.com\/wp-content\/uploads\/2021\/08\/ManualSQL_ParticionHorizontalTablas_03-300x224.png 300w, https:\/\/manualsqlserver.com\/wp-content\/uploads\/2021\/08\/ManualSQL_ParticionHorizontalTablas_03-768x573.png 768w, https:\/\/manualsqlserver.com\/wp-content\/uploads\/2021\/08\/ManualSQL_ParticionHorizontalTablas_03-795x593.png 795w, https:\/\/manualsqlserver.com\/wp-content\/uploads\/2021\/08\/ManualSQL_ParticionHorizontalTablas_03.png 1119w\" sizes=\"auto, (max-width: 839px) 100vw, 839px\" \/><\/a><\/figure>\n\n\n\n<p>Tambi\u00e9n se puede desplegar desde el Explorador de objetos el nodo Keys de la tabla.<br>En la imagen se puede ver el nombre: PK_Customers<\/p>\n\n\n\n<figure class=\"wp-block-image size-full is-resized\"><a href=\"https:\/\/manualsqlserver.com\/wp-content\/uploads\/2021\/08\/ManualSQL_ParticionHorizontalTablas_04.png\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/manualsqlserver.com\/wp-content\/uploads\/2021\/08\/ManualSQL_ParticionHorizontalTablas_04.png\" alt=\"\" class=\"wp-image-2577\" width=\"368\" height=\"429\" srcset=\"https:\/\/manualsqlserver.com\/wp-content\/uploads\/2021\/08\/ManualSQL_ParticionHorizontalTablas_04.png 308w, https:\/\/manualsqlserver.com\/wp-content\/uploads\/2021\/08\/ManualSQL_ParticionHorizontalTablas_04-257x300.png 257w\" sizes=\"auto, (max-width: 368px) 100vw, 368px\" \/><\/a><\/figure>\n\n\n\n<p><strong>Como ya existe una \u00edndice agrupado para la tabla Clientes (Customers), se debe crear un \u00edndice no agrupado para el campo CustomerId por el cual se va a particionar la tabla.<br>Crear el indice agrupado particionado<\/strong><br>Create nonclustered index PK_CustomersIDX<br>on Customers(CustomerID)<br>on EsquemaParticionClientes(CustomerID)<br>go<br><strong>Ver los clientes, se incluye la funci\u00f3n $Partition para ver la partici\u00f3n en la que se encuentran los registros.<\/strong><br>select<br>C.CustomerID As 'C\u00f3digo',<br>C.CompanyName As 'Cliente',<br>$Partition.FuncionParticionClientes(CustomerId)<br>As 'Partici\u00f3n'<br>from Customers As C<br>go<br>El resultado se muestra en la siguiente imagen.<\/p>\n\n\n\n<figure class=\"wp-block-image size-full is-resized\"><a href=\"https:\/\/manualsqlserver.com\/wp-content\/uploads\/2021\/08\/ManualSQL_ParticionHorizontalTablas_05.png\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/manualsqlserver.com\/wp-content\/uploads\/2021\/08\/ManualSQL_ParticionHorizontalTablas_05.png\" alt=\"\" class=\"wp-image-2578\" width=\"575\" height=\"944\" srcset=\"https:\/\/manualsqlserver.com\/wp-content\/uploads\/2021\/08\/ManualSQL_ParticionHorizontalTablas_05.png 511w, https:\/\/manualsqlserver.com\/wp-content\/uploads\/2021\/08\/ManualSQL_ParticionHorizontalTablas_05-183x300.png 183w\" sizes=\"auto, (max-width: 575px) 100vw, 575px\" \/><\/a><\/figure>\n\n\n\n<p><strong>Para visualizar cuantos clientes est\u00e1n en cada partici\u00f3n.<br><\/strong>Select<br>T.name As 'Tabla', I.name As '\u00cdndice',<br>P.partition_number As 'N\u00ba Partici\u00f3n',<br>R.value As 'L\u00edmite',<br>F.name As 'Funci\u00f3n de partici\u00f3n',<br>S.name As 'Esquema de partici\u00f3n',<br>P.rows As 'Cantidad registros'<br>from sys.tables As T<br>join sys.indexes as I on T.object_id = I.object_id<br>join sys.partitions As P on I.index_id = P.index_id and I.object_id = P.object_id<br>join sys.partition_schemes As S on I.data_space_id = S.data_space_id<br>join sys.partition_functions As F on S.function_id = F.function_id<br>left join sys.partition_range_values As R on F.function_id = R.function_id<br>and R.boundary_id = P.partition_number<br>where T.name = 'Customers' and I.type = 1<br>go<br>El resultado se muestra en la siguiente imagen.<\/p>\n\n\n\n<figure class=\"wp-block-image size-full is-resized\"><a href=\"https:\/\/manualsqlserver.com\/wp-content\/uploads\/2021\/08\/ManualSQL_ParticionHorizontalTablas_06.png\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/manualsqlserver.com\/wp-content\/uploads\/2021\/08\/ManualSQL_ParticionHorizontalTablas_06.png\" alt=\"\" class=\"wp-image-2579\" width=\"865\" height=\"196\" srcset=\"https:\/\/manualsqlserver.com\/wp-content\/uploads\/2021\/08\/ManualSQL_ParticionHorizontalTablas_06.png 984w, https:\/\/manualsqlserver.com\/wp-content\/uploads\/2021\/08\/ManualSQL_ParticionHorizontalTablas_06-300x68.png 300w, https:\/\/manualsqlserver.com\/wp-content\/uploads\/2021\/08\/ManualSQL_ParticionHorizontalTablas_06-768x174.png 768w, https:\/\/manualsqlserver.com\/wp-content\/uploads\/2021\/08\/ManualSQL_ParticionHorizontalTablas_06-795x180.png 795w\" sizes=\"auto, (max-width: 865px) 100vw, 865px\" \/><\/a><\/figure>\n\n\n\n<p><\/p>\n\n\n\n<script async=\"\" src=\"\/\/pagead2.googlesyndication.com\/pagead\/js\/adsbygoogle.js\"><\/script>\n<ins class=\"adsbygoogle\" style=\"display:block; text-align:center;\" data-ad-layout=\"in-article\" data-ad-format=\"fluid\" data-ad-client=\"ca-pub-2636008503986218\" data-ad-slot=\"1902193434\"><\/ins>\n<script>\n     (adsbygoogle = window.adsbygoogle || []).push({});\n<\/script<\/script>\n\n\n\n<p style=\"font-size:22px\"><strong>Ejercicio 4<\/strong><\/p>\n\n\n\n<p><strong>Particionar la tabla productos por el campo de la descripci\u00f3n (ProductName)<\/strong><br><strong>La funci\u00f3n de partici\u00f3n para la tabla Productos.<\/strong><br>Create partition function FuncionParticionProductosDescripcion (nvarchar(40))<br>As range left<br>for values ('E', 'J', 'O', 'T')<br>go<br><strong>El esquema de partici\u00f3n para la tabla productos<\/strong><br>Create partition scheme EsquemaParticionProductosDescripcion<br>as partition FuncionParticionProductosDescripcion<br>to ([Primary],Ventas,Recursos,Recursos,Logistica)<br>go<br><strong>El \u00edndice no agrupado particionado para el campo ProductName<\/strong><br>Create nonclustered index ProductosDescripcionIDXParticionado<br>on Products(ProductName)<br>include (ProductId)<br>on EsquemaParticionProductosDescripcion(ProductName)<br>go<br><strong>Ver los datos con la columna que indica en que partici\u00f3n se encuentra el registro<\/strong><br>select<br>P.ProductID As 'C\u00f3digo',<br>P.ProductName As 'Descripci\u00f3n',<br>$Partition.FuncionParticionProductosDescripcion(ProductName)<br>As 'Partici\u00f3n'<br>from Products As P<br>go<br>El resultado se muestra en la siguiente imagen.<\/p>\n\n\n\n<figure class=\"wp-block-image size-full is-resized\"><a href=\"https:\/\/manualsqlserver.com\/wp-content\/uploads\/2021\/08\/ManualSQL_ParticionHorizontalTablas_07.png\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/manualsqlserver.com\/wp-content\/uploads\/2021\/08\/ManualSQL_ParticionHorizontalTablas_07.png\" alt=\"\" class=\"wp-image-2580\" width=\"418\" height=\"908\" srcset=\"https:\/\/manualsqlserver.com\/wp-content\/uploads\/2021\/08\/ManualSQL_ParticionHorizontalTablas_07.png 362w, https:\/\/manualsqlserver.com\/wp-content\/uploads\/2021\/08\/ManualSQL_ParticionHorizontalTablas_07-138x300.png 138w\" sizes=\"auto, (max-width: 418px) 100vw, 418px\" \/><\/a><\/figure>\n\n\n\n<p style=\"font-size:22px\"><strong>Ejercicio 5<\/strong><\/p>\n\n\n\n<p style=\"font-size:18px\"><strong>Particionar la tabla Orders por el campo OrderID<\/strong><\/p>\n\n\n\n<p><strong>La funci\u00f3n de partici\u00f3n para la tabla Orders<\/strong><br>Create partition function FuncionParticionOrdenesNumero (Int)<br>As range left<br>for values (10200, 10400, 10800, 11200)<br>go<br><strong>El esquema de partici\u00f3n para la tabla Orders<\/strong><br>Create partition scheme EsquemaParticionOrdenesNumero<br>as partition FuncionParticionOrdenesNumero<br>to ([Primary],Ventas,Recursos,Recursos,Logistica)<br>go<br><strong>El \u00edndice no agrupado particionado para el campo OrderId<\/strong><br>Create nonclustered index OrdenesNumeroParticionadoIDX<br>on Orders(OrderId)<br>on EsquemaParticionOrdenesNumero(OrderID)<br>go<br>Alter index OrdenesNumeroParticionadoIDX on Orders rebuild<br>partition = all<\/p>\n\n\n\n<p><strong>Ver los datos de las \u00f3rdenes<br><\/strong>select<br>O.OrderId As 'N\u00ba Orden',<br>Format(O.OrderDate,'dd\/MM\/yyyy') As 'Fecha',<br>$Partition.FuncionParticionOrdenesNumero(OrderId)<br>As 'Partici\u00f3n'<br>from Orders As O<br>go<br>El resultado se muestra en la siguiente imagen, se puede ver registros de la partici\u00f3n 2 y la partici\u00f3n 3.<\/p>\n\n\n\n<figure class=\"wp-block-image size-full is-resized\"><a href=\"https:\/\/manualsqlserver.com\/wp-content\/uploads\/2021\/08\/ManualSQL_ParticionHorizontalTablas_08.png\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/manualsqlserver.com\/wp-content\/uploads\/2021\/08\/ManualSQL_ParticionHorizontalTablas_08.png\" alt=\"\" class=\"wp-image-2581\" width=\"386\" height=\"945\" srcset=\"https:\/\/manualsqlserver.com\/wp-content\/uploads\/2021\/08\/ManualSQL_ParticionHorizontalTablas_08.png 321w, https:\/\/manualsqlserver.com\/wp-content\/uploads\/2021\/08\/ManualSQL_ParticionHorizontalTablas_08-123x300.png 123w\" sizes=\"auto, (max-width: 386px) 100vw, 386px\" \/><\/a><\/figure>\n\n\n\n<p><strong>Para poder listar la cantidad de registros en cada partici\u00f3n usaremos las vistas del sistema siguientes:<br><\/strong>sys.Tables que contiene las tablas.<br>sys.indexes que contiene los \u00edndices.<br>sys.partitions que contiene las particiones.<br>sys.partition_schemes que contiene los esquemas de partici\u00f3n.<br>sys.partition_functions que contiene las funciones de partici\u00f3n.<br>sys.partition_range_values que contiene los l\u00edmites de las funciones de partici\u00f3n.<\/p>\n\n\n\n<p>Select<br>T.name As 'Tabla', I.name As '\u00cdndice',<br>P.partition_number As 'N\u00ba Partici\u00f3n',<br>R.value As 'L\u00edmite',<br>F.name As 'Funci\u00f3n de partici\u00f3n',<br>S.name As 'Esquema de partici\u00f3n',<br>P.rows As 'Cantidad registros'<br>from sys.tables As T<br>join sys.indexes as I on T.object_id = I.object_id<br>join sys.partitions As P on I.index_id = P.index_id and I.object_id = P.object_id<br>join sys.partition_schemes As S on I.data_space_id = S.data_space_id<br>join sys.partition_functions As F on S.function_id = F.function_id<br>left join sys.partition_range_values As R on F.function_id = R.function_id<br>and R.boundary_id = P.partition_number<br>where T.name = 'Orders'<br>go<br>El resultado se muestra en la siguiente imagen<\/p>\n\n\n\n<figure class=\"wp-block-image size-large is-resized\"><a href=\"https:\/\/manualsqlserver.com\/wp-content\/uploads\/2021\/08\/ManualSQL_ParticionHorizontalTablas_09.png\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/manualsqlserver.com\/wp-content\/uploads\/2021\/08\/ManualSQL_ParticionHorizontalTablas_09-1024x199.png\" alt=\"\" class=\"wp-image-2582\" width=\"861\" height=\"167\" srcset=\"https:\/\/manualsqlserver.com\/wp-content\/uploads\/2021\/08\/ManualSQL_ParticionHorizontalTablas_09-1024x199.png 1024w, https:\/\/manualsqlserver.com\/wp-content\/uploads\/2021\/08\/ManualSQL_ParticionHorizontalTablas_09-300x58.png 300w, https:\/\/manualsqlserver.com\/wp-content\/uploads\/2021\/08\/ManualSQL_ParticionHorizontalTablas_09-768x149.png 768w, https:\/\/manualsqlserver.com\/wp-content\/uploads\/2021\/08\/ManualSQL_ParticionHorizontalTablas_09-795x155.png 795w, https:\/\/manualsqlserver.com\/wp-content\/uploads\/2021\/08\/ManualSQL_ParticionHorizontalTablas_09.png 1193w\" sizes=\"auto, (max-width: 861px) 100vw, 861px\" \/><\/a><\/figure>\n","protected":false},"excerpt":{"rendered":"<p>Particionando una tabla horizontalmente Las tablas en cualquier base de datos guardan la informaci\u00f3n de los registros, una tabla que tiene muchos registros puede considerarse una tabla cr\u00edtica, aquella que al consultar o buscar registros demore y cause problemas en los sistemas. Las tablas con muchos registros deben particionarse, para obtener el mejor resultado de &hellip; <\/p>\n<p><a class=\"more-link btn\" href=\"https:\/\/manualsqlserver.com\/?p=2572\">Seguir leyendo<\/a><\/p>\n","protected":false},"author":1,"featured_media":2573,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[5],"tags":[105,192,20,283],"class_list":["post-2572","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-esquemastablas","tag-create-index","tag-create-partition","tag-create-table","tag-particionando-una-tabla","nodate","item-wrap"],"_links":{"self":[{"href":"https:\/\/manualsqlserver.com\/index.php?rest_route=\/wp\/v2\/posts\/2572","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/manualsqlserver.com\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/manualsqlserver.com\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/manualsqlserver.com\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/manualsqlserver.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=2572"}],"version-history":[{"count":1,"href":"https:\/\/manualsqlserver.com\/index.php?rest_route=\/wp\/v2\/posts\/2572\/revisions"}],"predecessor-version":[{"id":2583,"href":"https:\/\/manualsqlserver.com\/index.php?rest_route=\/wp\/v2\/posts\/2572\/revisions\/2583"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/manualsqlserver.com\/index.php?rest_route=\/wp\/v2\/media\/2573"}],"wp:attachment":[{"href":"https:\/\/manualsqlserver.com\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=2572"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/manualsqlserver.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=2572"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/manualsqlserver.com\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=2572"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}