{"id":557,"date":"2017-09-18T20:30:22","date_gmt":"2017-09-18T20:30:22","guid":{"rendered":"http:\/\/www.manualsqlserver.com\/?p=557"},"modified":"2020-05-20T17:57:15","modified_gmt":"2020-05-20T17:57:15","slug":"indices-particionados","status":"publish","type":"post","link":"https:\/\/manualsqlserver.com\/?p=557","title":{"rendered":"\u00cdndices particionados en SQL Server"},"content":{"rendered":"\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"230\" height=\"258\" src=\"https:\/\/manualsqlserver.com\/wp-content\/uploads\/2020\/05\/ManualSQL_IndicesPaticionadosD.png\" alt=\"\" class=\"wp-image-1312\"\/><\/figure>\n\n\n\n<h1 class=\"wp-block-heading\"><strong>\u00cdndices particionados<\/strong><\/h1>\n\n\n\n<p>Los \u00edndices particionados son tipos de \u00edndices usados en tablas particionadas. (Ver <a href=\"http:\/\/www.manualsqlserver.com\/?p=141\">Tablas particionadas<\/a>).<\/p>\n\n\n\n<!--more-->\n\n\n\n<h2 class=\"wp-block-heading\">Conceptos previos<\/h2>\n\n\n\n<ul class=\"wp-block-list\"><li>La partici\u00f3n facilita el uso de tablas e \u00edndices grandes, ya que permite administrar &nbsp;y tener acceso a subconjuntos de datos de forma r\u00e1pida y eficaz, a la vez que mantiene la integridad de la recopilaci\u00f3n de datos.<\/li><li>Si se utilizan las particiones, una operaci\u00f3n como la carga de datos desde un &nbsp;sistema OLTP a un sistema OLAP tarda solo unos segundos, &nbsp;en lugar de los minutos y las horas que tardaba en versiones anteriores<br>de SQL Server.<\/li><li>Las operaciones de mantenimiento que se realizan en los subconjuntos de datos &nbsp;tambi\u00e9n se realizan de forma m\u00e1s eficaz porque estas operaciones solo afectan a los datos necesarios, en lugar de a toda la tabla.<\/li><li>Las tablas e \u00edndices con particiones \u00fanicamente est\u00e1n disponibles en las ediciones Enterprise, Developer y Evaluation de SQL Server.<\/li><li>Los datos de tablas e \u00edndices con particiones se dividen en unidades que pueden propagarse por m\u00e1s de un grupo de archivos de la base de datos.<\/li><li>Los datos se dividen en sentido horizontal, de forma que los grupos de filas se asignan a particiones individuales.<\/li><li>La tabla o el \u00edndice se tratar\u00e1n como una sola entidad l\u00f3gica cuando se realicen consultas o actualizaciones en los datos. Las particiones de un \u00edndice o una tabla deben encontrarse en la misma base de datos.<\/li><li>Las tablas y los \u00edndices con particiones admiten todas las propiedades y caracter\u00edsticas asociadas con el dise\u00f1o y la consulta de tablas e \u00edndices est\u00e1ndar, incluidas las restricciones, los valores predeterminados, los valores de identidad y marca de tiempo, as\u00ed como los desencadenadores. Por tanto, si desea implementar una vista con particiones local en un servidor, puede interesarle implementar en su lugar una tabla con particiones.<\/li><li>La decisi\u00f3n acerca del uso de las particiones depende b\u00e1sicamente del tama\u00f1o actual &nbsp;o futuro de la tabla, la forma en que se utiliza y el rendimiento que presenta en las consultas de usuario y las operaciones de mantenimiento.<\/li><\/ul>\n\n\n\n<script async src=\"\/\/pagead2.googlesyndication.com\/pagead\/js\/adsbygoogle.js\"><\/script>\n<ins class=\"adsbygoogle\"\n     style=\"display:block; text-align:center;\"\n     data-ad-layout=\"in-article\"\n     data-ad-format=\"fluid\"\n     data-ad-client=\"ca-pub-2636008503986218\"\n     data-ad-slot=\"1902193434\"><\/ins>\n<script>\n     (adsbygoogle = window.adsbygoogle || []).push({});\n<\/script>\n\n\n\n<h3 class=\"wp-block-heading\"><strong>Ejemplo<\/strong><\/h3>\n\n\n\n<p><strong>Para crear \u00edndices particionados vamos a crear primero una tabla particionada.<\/strong><br><strong> Este ejercicio muestra una tabla con 5 particiones en tres grupos de archivos, <\/strong><br><strong> la base de datos est\u00e1 creada en las unidades C: y D:<\/strong><\/p>\n\n\n\n<p>xp_create_subdir &#8216;C:\\Parte&#8217;<br>go<br>xp_create_subdir &#8216;D:\\Logica&#8217;<br>go<br>Create database Sistemas<br>on Primary (name= &#8216;Sistemas01&#8217;, Filename = &#8216;C:\\Parte\\Sistemas01.mdf&#8217;),<br>Filegroup VENTAS (name= &#8216;Sistemas02&#8217;, Filename = &#8216;C:\\Parte\\Sistemas02.ndf&#8217;),<br>Filegroup RECURSOS (name= &#8216;Sistemas03&#8217;, Filename = &#8216;C:\\Parte\\Sistemas03.ndf&#8217;)<br>log on<br>(name= &#8216;Tran01&#8217;, Filename = &#8216;C:\\Parte\\Tran01.ldf&#8217;)<br>go<br>use Sistemas<br>go<\/p>\n\n\n\n<p><strong>La tabla particionada, esta requiere una funci\u00f3n de partici\u00f3n y un esquema<\/strong><br><strong>de partici\u00f3n.<\/strong><\/p>\n\n\n\n<p>Create partition function ProductosFP (nchar(10))<br>as range for values (&#8216;E&#8217;,&#8217;J&#8217;, &#8216;O&#8217;, &#8216;T&#8217;)<br>go<br>Create partition scheme ProductosEP as partition ProductosFP<br>to (VENTAS, VENTAS, RECURSOS, [Primary], RECURSOS)<br>go<br>Create table Productos<br>(ProductosCodigo nchar(10), ProductosDescripcion nvarchar(100),<br>ProductosPrecio Numeric(9,2), ProductosStock Numeric(9,2)<br>constraint ProductosPK Primary key (ProductosCodigo))<br><strong>on ProductosEP (ProductosCodigo)<\/strong><br>go<\/p>\n\n\n\n<p><strong>Insertar datos a la tabla, se tomar\u00e1n los datos de la tabla Products de Northwind<\/strong><\/p>\n\n\n\n<p>insert into Productos<br>select ProductID, ProductName, UnitPrice, UnitsInStock<br>from Northwind.dbo.Products<br>go<\/p>\n\n\n\n<p><strong>Generar un nuevo c\u00f3digo<\/strong><br><strong>Primero mostrar el c\u00f3digo.<\/strong><\/p>\n\n\n\n<p>select ProductosCodigo,<br>UPPER(left(ProductosDescripcion,4)+<br>Rtrim(Ltrim(iif(len(ProductosCodigo)=1,&#8217;000&#8217;+Ltrim(ProductosCodigo), &#8217;00&#8217;+Ltrim(ProductosCodigo))))) + Rtrim(LTrim(&#8216;PR&#8217;))<br>As &#8216;Nuevo C\u00f3digo&#8217;<br>from Productos<br>go<\/p>\n\n\n\n<p><strong>Recorrer los productos y actualizar los c\u00f3digos.<\/strong><br><strong>Usaremos un cursor (Ver <a href=\"http:\/\/www.manualsqlserver.com\/?p=343\">Cursores<\/a>)<\/strong><\/p>\n\n\n\n<p>Declare cursorActualizaCodigos cursor for select * from Productos<br>Open cursorActualizaCodigos<br>Declare @Codigo nchar(10), @Descripcion nvarchar(100), @Precio Numeric(9,2), @Stock Numeric(9,2)<br>Fetch cursorActualizaCodigos into @Codigo , @Descripcion, @Precio , @Stock<br>While (@@FETCH_STATUS = 0)<br>Begin<br>Update Productos set ProductosCodigo =<br>UPPER(left(@Descripcion,4)+ Rtrim(Ltrim(iif(len(@Codigo)=1,&#8217;000&#8217;+Ltrim(@Codigo),<br>&#8217;00&#8217;+Ltrim(@Codigo))))) + Rtrim(LTrim(&#8216;PR&#8217;))<br>where ProductosCodigo = @Codigo<br>Fetch cursorActualizaCodigos into @Codigo , @Descripcion, @Precio , @Stock<br>End<br>Close cursorActualizaCodigos<br>Deallocate cursorActualizaCodigos<br>go<\/p>\n\n\n\n<p><strong>Ver los datos y las particiones donde se guardaron<\/strong><\/p>\n\n\n\n<p>select ProductosCodigo, ProductosDescripcion,<br>$Partition.ProductosFP(ProductosCodigo) As &#8216;Partici\u00f3n&#8217;<br>from Productos<br>go<\/p>\n\n\n\n<div class=\"wp-block-image\"><figure class=\"aligncenter size-large is-resized\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/manualsqlserver.com\/wp-content\/uploads\/2020\/05\/ManualSQL_IndicesPaticionados01.png\" alt=\"\" class=\"wp-image-1311\" width=\"862\" height=\"657\" srcset=\"https:\/\/manualsqlserver.com\/wp-content\/uploads\/2020\/05\/ManualSQL_IndicesPaticionados01.png 718w, https:\/\/manualsqlserver.com\/wp-content\/uploads\/2020\/05\/ManualSQL_IndicesPaticionados01-300x229.png 300w\" sizes=\"auto, (max-width: 862px) 100vw, 862px\" \/><\/figure><\/div>\n\n\n\n<h2 class=\"wp-block-heading\"><strong>\u00cdndice particionado<\/strong><\/h2>\n\n\n\n<h3 class=\"wp-block-heading\"><strong>Create index ProductosIDXParticionado on Productos (ProductosCodigo)<\/strong> <strong> include (ProductosDescripcion)<\/strong><br><strong> on ProductosEP (ProductosCodigo)<\/strong><br><strong>go<\/strong><\/h3>\n\n\n\n<p>Al final de la creaci\u00f3n del \u00edndice se incluye la cl\u00e1usula<strong> on<\/strong> seguido del nombre del esquema de partici\u00f3n y el campo particionado.<\/p>\n\n\n\n<p><strong>Note que para hacer mas eficiente el \u00edndice se puede incluir (usando include) el campo Descripci\u00f3n.<\/strong><\/p>\n\n\n\n<script async src=\"\/\/pagead2.googlesyndication.com\/pagead\/js\/adsbygoogle.js\"><\/script>\n<ins class=\"adsbygoogle\"\n     style=\"display:block; text-align:center;\"\n     data-ad-layout=\"in-article\"\n     data-ad-format=\"fluid\"\n     data-ad-client=\"ca-pub-2636008503986218\"\n     data-ad-slot=\"1902193434\"><\/ins>\n<script>\n     (adsbygoogle = window.adsbygoogle || []).push({});\n<\/script>\n","protected":false},"excerpt":{"rendered":"<p>\u00cdndices particionados Los \u00edndices particionados son tipos de \u00edndices usados en tablas particionadas. (Ver Tablas particionadas).<\/p><p><a class=\"more-link btn\" href=\"https:\/\/manualsqlserver.com\/?p=557\">Seguir leyendo<\/a><\/p>\n","protected":false},"author":1,"featured_media":1312,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[2,7],"tags":[25,28,35,38,46,47,53,57],"class_list":["post-557","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-crearbd","category-indices","tag-cursores","tag-esquemas","tag-indices","tag-insertar-registros","tag-particion","tag-permisos","tag-sqlserver","tag-tablas","nodate","item-wrap"],"_links":{"self":[{"href":"https:\/\/manualsqlserver.com\/index.php?rest_route=\/wp\/v2\/posts\/557","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=557"}],"version-history":[{"count":1,"href":"https:\/\/manualsqlserver.com\/index.php?rest_route=\/wp\/v2\/posts\/557\/revisions"}],"predecessor-version":[{"id":1314,"href":"https:\/\/manualsqlserver.com\/index.php?rest_route=\/wp\/v2\/posts\/557\/revisions\/1314"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/manualsqlserver.com\/index.php?rest_route=\/wp\/v2\/media\/1312"}],"wp:attachment":[{"href":"https:\/\/manualsqlserver.com\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=557"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/manualsqlserver.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=557"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/manualsqlserver.com\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=557"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}