{"id":32393,"date":"2025-04-15T10:16:03","date_gmt":"2025-04-15T08:16:03","guid":{"rendered":"https:\/\/www.codemotion.com\/magazine\/?p=32393"},"modified":"2025-04-15T10:18:08","modified_gmt":"2025-04-15T08:18:08","slug":"indices-clustered-y-primary-keys-indices-parte-3","status":"publish","type":"post","link":"https:\/\/www.codemotion.com\/magazine\/es\/backend-es\/indices-clustered-y-primary-keys-indices-parte-3\/","title":{"rendered":"\u00cdndices Clustered y Primary Keys (\u00cdndices parte 3)"},"content":{"rendered":"\n<p><span style=\"font-weight: 400\">En esta tercera entrega de nuestra serie de \u00edndices vamos a hablar de los \u00edndices clustered. Para entender lo que vamos a ver tenemos que tener claro de antemano lo que vimos en la <a href=\"https:\/\/www.codemotion.com\/magazine\/es\/backend-es\/introduccion-a-los-indices-en-sql-server-indices-parte-1\/\">primera <\/a>y la segunda entrada de esta serie. Si a\u00fan no lo has le\u00eddo es el momento, para aqu\u00ed mismo y vuelve cuando lo hayas hecho.\u00a0<\/span><\/p>\n\n\n\n<p><span style=\"font-weight: 400\">Bien, ahora que ya tenemos todos le\u00eddas la primera y la segunda entrega vamos a empezar.<\/span> Analizaremos en profundidad las caracter\u00edsticas de los \u00edndices clustered, buenas pr\u00e1cticas y veremos adem\u00e1s lo que es una PK.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"h-indices-clustered-en-sql-server\"><span style=\"font-weight: 400\">\u00cdndices Clustered en SQL Server<\/span><\/h2>\n\n\n\n<p><span style=\"font-weight: 400\">Recordemos lo que comentamos en la introducci\u00f3n, un \u00edndice clustered es en realidad toda la tabla ordenada por las columnas que componen el \u00edndice. Por este motivo solo puede haber un \u00edndice clustered por cada tabla. No tiene m\u00e1s restricciones que esa a menos que se las a\u00f1adamos nosotros. Admite nulos y duplicados, aunque no es recomendable y luego veremos por qu\u00e9.&nbsp;<\/span><\/p>\n\n\n\n<p><span style=\"font-weight: 400\">Comparemos con lo que vimos de las tablas HEAP que ten\u00edamos un IAM que nos dec\u00eda d\u00f3nde empezaba la informaci\u00f3n. En los \u00edndices clustered tambi\u00e9n tenemos una estructura por encima que nos dice d\u00f3nde est\u00e1 la informaci\u00f3n aunque en este caso es una estructura por niveles llamada de \u00e1rbol invertido o \u00e1rbol B. En los \u00e1rboles partimos de un tronco abajo que se va bifurcando en ramas hasta terminar en las hojas arriba, pues nuestro \u00e1rbol invertido es igual, partimos de un nivel superior que se va separando por niveles hasta terminar en todas las p\u00e1ginas abajo. Ser\u00eda algo similar a lo que podemos ver en la siguiente imagen:<\/span><\/p>\n\n\n\n<figure data-wp-context=\"{&quot;imageId&quot;:&quot;69f28cb11e53d&quot;}\" data-wp-interactive=\"core\/image\" class=\"wp-block-image size-medium wp-lightbox-container\"><img decoding=\"async\" data-wp-class--hide=\"state.isContentHidden\" data-wp-class--show=\"state.isContentVisible\" data-wp-init=\"callbacks.setButtonStyles\" data-wp-on-async--click=\"actions.showLightbox\" data-wp-on-async--load=\"callbacks.setButtonStyles\" data-wp-on-async-window--resize=\"callbacks.setButtonStyles\" src=\"https:\/\/www.soydba.es\/wp-content\/uploads\/2023\/12\/btree-300x166.png\" alt=\"\u00edndices clustered\" class=\"wp-image-178\" \/><button\n\t\t\tclass=\"lightbox-trigger\"\n\t\t\ttype=\"button\"\n\t\t\taria-haspopup=\"dialog\"\n\t\t\taria-label=\"Enlarge\"\n\t\t\tdata-wp-init=\"callbacks.initTriggerButton\"\n\t\t\tdata-wp-on-async--click=\"actions.showLightbox\"\n\t\t\tdata-wp-style--right=\"state.imageButtonRight\"\n\t\t\tdata-wp-style--top=\"state.imageButtonTop\"\n\t\t>\n\t\t\t<svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"12\" height=\"12\" fill=\"none\" viewBox=\"0 0 12 12\">\n\t\t\t\t<path fill=\"#fff\" d=\"M2 0a2 2 0 0 0-2 2v2h1.5V2a.5.5 0 0 1 .5-.5h2V0H2Zm2 10.5H2a.5.5 0 0 1-.5-.5V8H0v2a2 2 0 0 0 2 2h2v-1.5ZM8 12v-1.5h2a.5.5 0 0 0 .5-.5V8H12v2a2 2 0 0 1-2 2H8Zm2-12a2 2 0 0 1 2 2v2h-1.5V2a.5.5 0 0 0-.5-.5H8V0h2Z\" \/>\n\t\t\t<\/svg>\n\t\t<\/button><\/figure>\n\n\n\n<p><span style=\"font-weight: 400\">En este caso tenemos una tabla con un \u00edndice clustered por un campo num\u00e9rico. Nuestro \u00edndice entonces crea una estructura de \u00e1rbol B desde un nivel ra\u00edz hasta ir bajando y llegar a las p\u00e1ginas con los datos. Aunque en el ejemplo lo he querido simplificar, lo normal ser\u00e1 tener m\u00e1s de un registro en cada una de las p\u00e1ginas finales. Estas p\u00e1ginas son del tipo IN_ROW_DATA y los registros estar\u00e1n ordenados por el campo num\u00e9rico del \u00edndice. Adem\u00e1s, igual que en las tablas HEAP, tendremos tambi\u00e9n p\u00e1ginas LOB_DATA y ROW_OVERFLOW_DATA para los datos grandes.<\/span><\/p>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"h-ordenacion-de-los-datos\"><span style=\"font-weight: 400\">Ordenaci\u00f3n de los datos<\/span><\/h3>\n\n\n\n<p><span style=\"font-weight: 400\">En el p\u00e1rrafo anterior os he mentido un poco, los que teneis un nivel m\u00e1s avanzado os habr\u00e9is dado cuenta. No me dej\u00e9is todav\u00eda un comentario negativo por favor, vamos a verlo. Os he dicho que los datos se guardan en las p\u00e1ginas ordenados por el campo que forma parte del \u00edndice, esta es la teor\u00eda y es como debe de estar pero no siempre es as\u00ed.<\/span><br><span style=\"font-weight: 400\">Cuando insertamos un dato SQL se va a posicionar en el sitio donde deber\u00e1 escribirlo y va a verificar si hay o no espacio, si hay espacio perfecto pero, si no lo escribir\u00e1 donde pueda. Lo mismo ocurre si actualizamos el campo indexado. Esto se llama fragmentaci\u00f3n de los \u00edndices y es el motivo por el que nuestros \u00edndices necesitan mantenimiento. Podr\u00edamos hablar ahora del Fill Factor de los \u00edndices y de su mantenimiento pero ambas cosas llegar\u00e1n m\u00e1s adelante en esta serie. De momento con saber esto nos vale.<\/span><\/p>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"h-buenas-practicas-en-los-indices-clustered\"><span style=\"font-weight: 400\">Buenas pr\u00e1cticas en los \u00edndices clustered<\/span><\/h3>\n\n\n\n<p><span style=\"font-weight: 400\">Este problema de la fragmentaci\u00f3n es por lo que al principio os dec\u00eda que no es recomendable crear un \u00edndice clustered por campos que admiten nulos o duplicados. Pero adem\u00e1s existen otras caracter\u00edsticas que identifican un buen \u00edndice clustered, debe ser corto, est\u00e1tico e incremental. Es f\u00e1cil de explicar, cuanto m\u00e1s corto sea menos nos costar\u00e1 buscar y ordenar<\/span>. D<span style=\"font-weight: 400\">ado que una actualizaci\u00f3n nos generar\u00e1 fragmentaci\u00f3n tambi\u00e9n debe de ser algo que no cambie nunca, es decir est\u00e1tico. Que sea incremental se entiende tambi\u00e9n en clave de evitar la fragmentaci\u00f3n pues si siempre aumenta siempre escribiremos despu\u00e9s de lo que ya existe.<\/span><\/p>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"h-indices-primary-key\"><span style=\"font-weight: 400\">\u00cdndices Primary Key<\/span><\/h2>\n\n\n\n<p><span style=\"font-weight: 400\">Cuando hablamos de un \u00edndice clustered que no admite duplicados en un campo que no admite nulos muchos de vosotros pensar\u00e9is autom\u00e1ticamente en una PK (Primary Key o clave primaria). Esto no es del todo correcto, es cierto que una PK por defecto tiene un \u00edndice clustered y que no admite nulos, pero no es lo mismo.&nbsp;<\/span><\/p>\n\n\n\n<p><span style=\"font-weight: 400\">Una PK es el identificador \u00fanico de los registros de nuestra tabla, por tanto es una restricci\u00f3n l\u00f3gica en la que una columna no admite valores nulos ni duplicados. Que sea una restricci\u00f3n l\u00f3gica significa que para poder implementarse a nivel f\u00edsico necesita de un \u00edndice.<\/span> M<span style=\"font-weight: 400\">ientras no definamos nosotros lo contrario ser\u00e1 un \u00edndice clustered. Pero puede que a nosotros nos interese que nuestra tabla se ordene por otro campo <\/span>y<span style=\"font-weight: 400\"> crear la PK sobre un \u00edndice nonclustered.&nbsp;<\/span><\/p>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"h-indices-clustered-vs-primary-keys\"><span style=\"font-weight: 400\">\u00cdndices Clustered vs Primary Keys<\/span><\/h2>\n\n\n\n<p><span style=\"font-weight: 400\">Ahora ya sabemos que un \u00edndice clustered no es lo mismo que una PK, la PK es una restricci\u00f3n l\u00f3gica que debe reforzarse con un \u00edndice f\u00edsico que puede ser clustered o nonclustered. Entonces, la pregunta ser\u00eda: \u00bfCu\u00e1ndo debo usar una PK clustered y cu\u00e1ndo una nonclustered?&nbsp;<\/span><\/p>\n\n\n\n<p><span style=\"font-weight: 400\">Imaginemos que estamos buscando la mejor manera de crear un \u00edndice clustered y una PK para nuestra tabla de personas. Tenemos unos datos como nombre, primer apellido, segundo apellido y NIE\/DNI. Sabemos que una PK no admite valores nulos ni duplicados y conocemos las buenas pr\u00e1cticas sobre \u00edndices clustered. En base a esto decidimos que la PK de nuestra tabla sea el DNI ya que no puede estar vac\u00edo y es un valor \u00fanico, pero \u00bfes un buen \u00edndice clustered? Es corto, una sola columna y de menos de 10 caracteres pero ni es incremental ni es est\u00e1tico (un n\u00famero NIE cambiar\u00e1 a DNI durante el proceso de residencia de un ciudadano extranjero). Es por esto que no es un buen candidato a \u00edndice clustered y lo mejor ser\u00e1 crear un campo ID incremental que identifique inequ\u00edvocamente a las personas de nuestra tabla.<\/span><\/p>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"h-conclusion\"><span style=\"font-weight: 400\">Conclusi\u00f3n<\/span><\/h2>\n\n\n\n<p><span style=\"font-weight: 400\">Hoy hemos aprendido aspectos important\u00edsimos sobre los \u00edndices clustered y las primary keys. Hemos visto que no siempre son lo mismo y en ocasiones puede interesarnos m\u00e1s una PK con un \u00edndice nonclustered. Sin embargo, a\u00fan no hemos hablado en profundidad de los \u00edndices nonclustered. Eso ser\u00e1 en el pr\u00f3ximo art\u00edculo, estad atentos<\/span><\/p>\n","protected":false},"excerpt":{"rendered":"<p>En esta tercera entrega de nuestra serie de \u00edndices vamos a hablar de los \u00edndices clustered. Para entender lo que vamos a ver tenemos que tener claro de antemano lo que vimos en la primera y la segunda entrada de esta serie. Si a\u00fan no lo has le\u00eddo es el momento, para aqu\u00ed mismo y&#8230; <a class=\"more-link\" href=\"https:\/\/www.codemotion.com\/magazine\/es\/backend-es\/indices-clustered-y-primary-keys-indices-parte-3\/\">Read more<\/a><\/p>\n","protected":false},"author":321,"featured_media":32706,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"_editorskit_title_hidden":false,"_editorskit_reading_time":0,"_editorskit_is_block_options_detached":false,"_editorskit_block_options_position":"{}","_uag_custom_page_level_css":"","_genesis_hide_title":false,"_genesis_hide_breadcrumbs":false,"_genesis_hide_singular_image":false,"_genesis_hide_footer_widgets":false,"_genesis_custom_body_class":"","_genesis_custom_post_class":"","_genesis_layout":"","footnotes":""},"categories":[10606],"tags":[],"collections":[13134,13126,13130,13132,13139,13136,13128],"class_list":{"0":"post-32393","1":"post","2":"type-post","3":"status-publish","4":"format-standard","5":"has-post-thumbnail","7":"category-backend-es","8":"collections-bases-de-datos","9":"collections-databases","10":"collections-indexes","11":"collections-indices","12":"collections-rendimiento","13":"collections-sql","14":"collections-sql-server","15":"entry"},"yoast_head":"<!-- This site is optimized with the Yoast SEO Premium plugin v26.9 (Yoast SEO v26.9) - https:\/\/yoast.com\/product\/yoast-seo-premium-wordpress\/ -->\n<title>\u00cdndices Clustered y Primary Keys (\u00cdndices parte 3) - Codemotion Magazine<\/title>\n<meta name=\"description\" content=\"Tercera entrega de la serie de \u00edndices en SQL Server. Aprende hoy todo sobre los \u00edndices clustered, las PK.\" \/>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/www.codemotion.com\/magazine\/es\/backend-es\/indices-clustered-y-primary-keys-indices-parte-3\/\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"\u00cdndices Clustered y Primary Keys (\u00cdndices parte 3)\" \/>\n<meta property=\"og:description\" content=\"Tercera entrega de la serie de \u00edndices en SQL Server. Aprende hoy todo sobre los \u00edndices clustered, las PK.\" \/>\n<meta property=\"og:url\" content=\"https:\/\/www.codemotion.com\/magazine\/es\/backend-es\/indices-clustered-y-primary-keys-indices-parte-3\/\" \/>\n<meta property=\"og:site_name\" content=\"Codemotion Magazine\" \/>\n<meta property=\"article:publisher\" content=\"https:\/\/www.facebook.com\/Codemotion.Italy\/\" \/>\n<meta property=\"article:published_time\" content=\"2025-04-15T08:16:03+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2025-04-15T08:18:08+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/www.codemotion.com\/magazine\/wp-content\/uploads\/2025\/04\/ChatGPT-Image-15-abr-2025-10_14_09-1.png\" \/>\n\t<meta property=\"og:image:width\" content=\"1536\" \/>\n\t<meta property=\"og:image:height\" content=\"1024\" \/>\n\t<meta property=\"og:image:type\" content=\"image\/png\" \/>\n<meta name=\"author\" content=\"Roberto Carrancio\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:creator\" content=\"@soy_dba\" \/>\n<meta name=\"twitter:site\" content=\"@CodemotionIT\" \/>\n<meta name=\"twitter:label1\" content=\"Written by\" \/>\n\t<meta name=\"twitter:data1\" content=\"Roberto Carrancio\" \/>\n\t<meta name=\"twitter:label2\" content=\"Est. reading time\" \/>\n\t<meta name=\"twitter:data2\" content=\"5 minutes\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\/\/www.codemotion.com\/magazine\/es\/backend-es\/indices-clustered-y-primary-keys-indices-parte-3\/#article\",\"isPartOf\":{\"@id\":\"https:\/\/www.codemotion.com\/magazine\/es\/backend-es\/indices-clustered-y-primary-keys-indices-parte-3\/\"},\"author\":{\"name\":\"Roberto Carrancio\",\"@id\":\"https:\/\/www.codemotion.com\/magazine\/#\/schema\/person\/97a034bd0d0536df0240ef899434fa19\"},\"headline\":\"\u00cdndices Clustered y Primary Keys (\u00cdndices parte 3)\",\"datePublished\":\"2025-04-15T08:16:03+00:00\",\"dateModified\":\"2025-04-15T08:18:08+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\/\/www.codemotion.com\/magazine\/es\/backend-es\/indices-clustered-y-primary-keys-indices-parte-3\/\"},\"wordCount\":1119,\"publisher\":{\"@id\":\"https:\/\/www.codemotion.com\/magazine\/#organization\"},\"image\":{\"@id\":\"https:\/\/www.codemotion.com\/magazine\/es\/backend-es\/indices-clustered-y-primary-keys-indices-parte-3\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/www.codemotion.com\/magazine\/wp-content\/uploads\/2025\/04\/ChatGPT-Image-15-abr-2025-10_14_09-1.png\",\"articleSection\":[\"Backend\"],\"inLanguage\":\"en-US\"},{\"@type\":\"WebPage\",\"@id\":\"https:\/\/www.codemotion.com\/magazine\/es\/backend-es\/indices-clustered-y-primary-keys-indices-parte-3\/\",\"url\":\"https:\/\/www.codemotion.com\/magazine\/es\/backend-es\/indices-clustered-y-primary-keys-indices-parte-3\/\",\"name\":\"\u00cdndices Clustered y Primary Keys (\u00cdndices parte 3) - Codemotion Magazine\",\"isPartOf\":{\"@id\":\"https:\/\/www.codemotion.com\/magazine\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\/\/www.codemotion.com\/magazine\/es\/backend-es\/indices-clustered-y-primary-keys-indices-parte-3\/#primaryimage\"},\"image\":{\"@id\":\"https:\/\/www.codemotion.com\/magazine\/es\/backend-es\/indices-clustered-y-primary-keys-indices-parte-3\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/www.codemotion.com\/magazine\/wp-content\/uploads\/2025\/04\/ChatGPT-Image-15-abr-2025-10_14_09-1.png\",\"datePublished\":\"2025-04-15T08:16:03+00:00\",\"dateModified\":\"2025-04-15T08:18:08+00:00\",\"description\":\"Tercera entrega de la serie de \u00edndices en SQL Server. Aprende hoy todo sobre los \u00edndices clustered, las PK.\",\"breadcrumb\":{\"@id\":\"https:\/\/www.codemotion.com\/magazine\/es\/backend-es\/indices-clustered-y-primary-keys-indices-parte-3\/#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/www.codemotion.com\/magazine\/es\/backend-es\/indices-clustered-y-primary-keys-indices-parte-3\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/www.codemotion.com\/magazine\/es\/backend-es\/indices-clustered-y-primary-keys-indices-parte-3\/#primaryimage\",\"url\":\"https:\/\/www.codemotion.com\/magazine\/wp-content\/uploads\/2025\/04\/ChatGPT-Image-15-abr-2025-10_14_09-1.png\",\"contentUrl\":\"https:\/\/www.codemotion.com\/magazine\/wp-content\/uploads\/2025\/04\/ChatGPT-Image-15-abr-2025-10_14_09-1.png\",\"width\":1536,\"height\":1024},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/www.codemotion.com\/magazine\/es\/backend-es\/indices-clustered-y-primary-keys-indices-parte-3\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\/\/www.codemotion.com\/magazine\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Backend\",\"item\":\"https:\/\/www.codemotion.com\/magazine\/es\/backend-es\/\"},{\"@type\":\"ListItem\",\"position\":3,\"name\":\"\u00cdndices Clustered y Primary Keys (\u00cdndices parte 3)\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\/\/www.codemotion.com\/magazine\/#website\",\"url\":\"https:\/\/www.codemotion.com\/magazine\/\",\"name\":\"Codemotion Magazine\",\"description\":\"We code the future. Together\",\"publisher\":{\"@id\":\"https:\/\/www.codemotion.com\/magazine\/#organization\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\/\/www.codemotion.com\/magazine\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"en-US\"},{\"@type\":\"Organization\",\"@id\":\"https:\/\/www.codemotion.com\/magazine\/#organization\",\"name\":\"Codemotion\",\"url\":\"https:\/\/www.codemotion.com\/magazine\/\",\"logo\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/www.codemotion.com\/magazine\/#\/schema\/logo\/image\/\",\"url\":\"https:\/\/www.codemotion.com\/magazine\/wp-content\/uploads\/2019\/11\/codemotionlogo.png\",\"contentUrl\":\"https:\/\/www.codemotion.com\/magazine\/wp-content\/uploads\/2019\/11\/codemotionlogo.png\",\"width\":225,\"height\":225,\"caption\":\"Codemotion\"},\"image\":{\"@id\":\"https:\/\/www.codemotion.com\/magazine\/#\/schema\/logo\/image\/\"},\"sameAs\":[\"https:\/\/www.facebook.com\/Codemotion.Italy\/\",\"https:\/\/x.com\/CodemotionIT\"]},{\"@type\":\"Person\",\"@id\":\"https:\/\/www.codemotion.com\/magazine\/#\/schema\/person\/97a034bd0d0536df0240ef899434fa19\",\"name\":\"Roberto Carrancio\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/www.codemotion.com\/magazine\/#\/schema\/person\/image\/\",\"url\":\"https:\/\/www.codemotion.com\/magazine\/wp-content\/uploads\/2025\/06\/2-100x100.png\",\"contentUrl\":\"https:\/\/www.codemotion.com\/magazine\/wp-content\/uploads\/2025\/06\/2-100x100.png\",\"caption\":\"Roberto Carrancio\"},\"description\":\"Mi nombre es Roberto Carrancio y soy un DBA de SQL server con m\u00e1s de 12 a\u00f1os de experiencia en el sector. Recientemente he sido reconocido como Microsoft MVP en la categor\u00eda Data Platform en SQL Server y en Azure SQL. Durante mis a\u00f1os de experiencia he tenido oportunidad de lidiar con proyectos en compa\u00f1\u00edas de todos los tama\u00f1os y sectores, desde pymes hasta grandes multinacionales. Tambi\u00e9n soy el creador del blog soydba.es donde intento publicar varios art\u00edculos a la semana.\",\"sameAs\":[\"https:\/\/www.soydba.es\",\"https:\/\/www.linkedin.com\/in\/robertocarrancio\/\",\"https:\/\/x.com\/soy_dba\",\"https:\/\/www.youtube.com\/@SoyDBA\"],\"url\":\"https:\/\/www.codemotion.com\/magazine\/author\/rocarrancio\/\"}]}<\/script>\n<!-- \/ Yoast SEO Premium plugin. -->","yoast_head_json":{"title":"\u00cdndices Clustered y Primary Keys (\u00cdndices parte 3) - Codemotion Magazine","description":"Tercera entrega de la serie de \u00edndices en SQL Server. Aprende hoy todo sobre los \u00edndices clustered, las PK.","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/www.codemotion.com\/magazine\/es\/backend-es\/indices-clustered-y-primary-keys-indices-parte-3\/","og_locale":"en_US","og_type":"article","og_title":"\u00cdndices Clustered y Primary Keys (\u00cdndices parte 3)","og_description":"Tercera entrega de la serie de \u00edndices en SQL Server. Aprende hoy todo sobre los \u00edndices clustered, las PK.","og_url":"https:\/\/www.codemotion.com\/magazine\/es\/backend-es\/indices-clustered-y-primary-keys-indices-parte-3\/","og_site_name":"Codemotion Magazine","article_publisher":"https:\/\/www.facebook.com\/Codemotion.Italy\/","article_published_time":"2025-04-15T08:16:03+00:00","article_modified_time":"2025-04-15T08:18:08+00:00","og_image":[{"width":1536,"height":1024,"url":"https:\/\/www.codemotion.com\/magazine\/wp-content\/uploads\/2025\/04\/ChatGPT-Image-15-abr-2025-10_14_09-1.png","type":"image\/png"}],"author":"Roberto Carrancio","twitter_card":"summary_large_image","twitter_creator":"@soy_dba","twitter_site":"@CodemotionIT","twitter_misc":{"Written by":"Roberto Carrancio","Est. reading time":"5 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/www.codemotion.com\/magazine\/es\/backend-es\/indices-clustered-y-primary-keys-indices-parte-3\/#article","isPartOf":{"@id":"https:\/\/www.codemotion.com\/magazine\/es\/backend-es\/indices-clustered-y-primary-keys-indices-parte-3\/"},"author":{"name":"Roberto Carrancio","@id":"https:\/\/www.codemotion.com\/magazine\/#\/schema\/person\/97a034bd0d0536df0240ef899434fa19"},"headline":"\u00cdndices Clustered y Primary Keys (\u00cdndices parte 3)","datePublished":"2025-04-15T08:16:03+00:00","dateModified":"2025-04-15T08:18:08+00:00","mainEntityOfPage":{"@id":"https:\/\/www.codemotion.com\/magazine\/es\/backend-es\/indices-clustered-y-primary-keys-indices-parte-3\/"},"wordCount":1119,"publisher":{"@id":"https:\/\/www.codemotion.com\/magazine\/#organization"},"image":{"@id":"https:\/\/www.codemotion.com\/magazine\/es\/backend-es\/indices-clustered-y-primary-keys-indices-parte-3\/#primaryimage"},"thumbnailUrl":"https:\/\/www.codemotion.com\/magazine\/wp-content\/uploads\/2025\/04\/ChatGPT-Image-15-abr-2025-10_14_09-1.png","articleSection":["Backend"],"inLanguage":"en-US"},{"@type":"WebPage","@id":"https:\/\/www.codemotion.com\/magazine\/es\/backend-es\/indices-clustered-y-primary-keys-indices-parte-3\/","url":"https:\/\/www.codemotion.com\/magazine\/es\/backend-es\/indices-clustered-y-primary-keys-indices-parte-3\/","name":"\u00cdndices Clustered y Primary Keys (\u00cdndices parte 3) - Codemotion Magazine","isPartOf":{"@id":"https:\/\/www.codemotion.com\/magazine\/#website"},"primaryImageOfPage":{"@id":"https:\/\/www.codemotion.com\/magazine\/es\/backend-es\/indices-clustered-y-primary-keys-indices-parte-3\/#primaryimage"},"image":{"@id":"https:\/\/www.codemotion.com\/magazine\/es\/backend-es\/indices-clustered-y-primary-keys-indices-parte-3\/#primaryimage"},"thumbnailUrl":"https:\/\/www.codemotion.com\/magazine\/wp-content\/uploads\/2025\/04\/ChatGPT-Image-15-abr-2025-10_14_09-1.png","datePublished":"2025-04-15T08:16:03+00:00","dateModified":"2025-04-15T08:18:08+00:00","description":"Tercera entrega de la serie de \u00edndices en SQL Server. Aprende hoy todo sobre los \u00edndices clustered, las PK.","breadcrumb":{"@id":"https:\/\/www.codemotion.com\/magazine\/es\/backend-es\/indices-clustered-y-primary-keys-indices-parte-3\/#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/www.codemotion.com\/magazine\/es\/backend-es\/indices-clustered-y-primary-keys-indices-parte-3\/"]}]},{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/www.codemotion.com\/magazine\/es\/backend-es\/indices-clustered-y-primary-keys-indices-parte-3\/#primaryimage","url":"https:\/\/www.codemotion.com\/magazine\/wp-content\/uploads\/2025\/04\/ChatGPT-Image-15-abr-2025-10_14_09-1.png","contentUrl":"https:\/\/www.codemotion.com\/magazine\/wp-content\/uploads\/2025\/04\/ChatGPT-Image-15-abr-2025-10_14_09-1.png","width":1536,"height":1024},{"@type":"BreadcrumbList","@id":"https:\/\/www.codemotion.com\/magazine\/es\/backend-es\/indices-clustered-y-primary-keys-indices-parte-3\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/www.codemotion.com\/magazine\/"},{"@type":"ListItem","position":2,"name":"Backend","item":"https:\/\/www.codemotion.com\/magazine\/es\/backend-es\/"},{"@type":"ListItem","position":3,"name":"\u00cdndices Clustered y Primary Keys (\u00cdndices parte 3)"}]},{"@type":"WebSite","@id":"https:\/\/www.codemotion.com\/magazine\/#website","url":"https:\/\/www.codemotion.com\/magazine\/","name":"Codemotion Magazine","description":"We code the future. Together","publisher":{"@id":"https:\/\/www.codemotion.com\/magazine\/#organization"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/www.codemotion.com\/magazine\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"en-US"},{"@type":"Organization","@id":"https:\/\/www.codemotion.com\/magazine\/#organization","name":"Codemotion","url":"https:\/\/www.codemotion.com\/magazine\/","logo":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/www.codemotion.com\/magazine\/#\/schema\/logo\/image\/","url":"https:\/\/www.codemotion.com\/magazine\/wp-content\/uploads\/2019\/11\/codemotionlogo.png","contentUrl":"https:\/\/www.codemotion.com\/magazine\/wp-content\/uploads\/2019\/11\/codemotionlogo.png","width":225,"height":225,"caption":"Codemotion"},"image":{"@id":"https:\/\/www.codemotion.com\/magazine\/#\/schema\/logo\/image\/"},"sameAs":["https:\/\/www.facebook.com\/Codemotion.Italy\/","https:\/\/x.com\/CodemotionIT"]},{"@type":"Person","@id":"https:\/\/www.codemotion.com\/magazine\/#\/schema\/person\/97a034bd0d0536df0240ef899434fa19","name":"Roberto Carrancio","image":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/www.codemotion.com\/magazine\/#\/schema\/person\/image\/","url":"https:\/\/www.codemotion.com\/magazine\/wp-content\/uploads\/2025\/06\/2-100x100.png","contentUrl":"https:\/\/www.codemotion.com\/magazine\/wp-content\/uploads\/2025\/06\/2-100x100.png","caption":"Roberto Carrancio"},"description":"Mi nombre es Roberto Carrancio y soy un DBA de SQL server con m\u00e1s de 12 a\u00f1os de experiencia en el sector. Recientemente he sido reconocido como Microsoft MVP en la categor\u00eda Data Platform en SQL Server y en Azure SQL. Durante mis a\u00f1os de experiencia he tenido oportunidad de lidiar con proyectos en compa\u00f1\u00edas de todos los tama\u00f1os y sectores, desde pymes hasta grandes multinacionales. Tambi\u00e9n soy el creador del blog soydba.es donde intento publicar varios art\u00edculos a la semana.","sameAs":["https:\/\/www.soydba.es","https:\/\/www.linkedin.com\/in\/robertocarrancio\/","https:\/\/x.com\/soy_dba","https:\/\/www.youtube.com\/@SoyDBA"],"url":"https:\/\/www.codemotion.com\/magazine\/author\/rocarrancio\/"}]}},"featured_image_src":"https:\/\/www.codemotion.com\/magazine\/wp-content\/uploads\/2025\/04\/ChatGPT-Image-15-abr-2025-10_14_09-1-600x400.png","featured_image_src_square":"https:\/\/www.codemotion.com\/magazine\/wp-content\/uploads\/2025\/04\/ChatGPT-Image-15-abr-2025-10_14_09-1-600x600.png","author_info":{"display_name":"Roberto Carrancio","author_link":"https:\/\/www.codemotion.com\/magazine\/author\/rocarrancio\/"},"uagb_featured_image_src":{"full":["https:\/\/www.codemotion.com\/magazine\/wp-content\/uploads\/2025\/04\/ChatGPT-Image-15-abr-2025-10_14_09-1.png",1536,1024,false],"thumbnail":["https:\/\/www.codemotion.com\/magazine\/wp-content\/uploads\/2025\/04\/ChatGPT-Image-15-abr-2025-10_14_09-1-150x150.png",150,150,true],"medium":["https:\/\/www.codemotion.com\/magazine\/wp-content\/uploads\/2025\/04\/ChatGPT-Image-15-abr-2025-10_14_09-1-300x200.png",300,200,true],"medium_large":["https:\/\/www.codemotion.com\/magazine\/wp-content\/uploads\/2025\/04\/ChatGPT-Image-15-abr-2025-10_14_09-1-768x512.png",768,512,true],"large":["https:\/\/www.codemotion.com\/magazine\/wp-content\/uploads\/2025\/04\/ChatGPT-Image-15-abr-2025-10_14_09-1-1024x683.png",1024,683,true],"1536x1536":["https:\/\/www.codemotion.com\/magazine\/wp-content\/uploads\/2025\/04\/ChatGPT-Image-15-abr-2025-10_14_09-1.png",1536,1024,false],"2048x2048":["https:\/\/www.codemotion.com\/magazine\/wp-content\/uploads\/2025\/04\/ChatGPT-Image-15-abr-2025-10_14_09-1.png",1536,1024,false],"small-home-featured":["https:\/\/www.codemotion.com\/magazine\/wp-content\/uploads\/2025\/04\/ChatGPT-Image-15-abr-2025-10_14_09-1-100x100.png",100,100,true],"sidebar-featured":["https:\/\/www.codemotion.com\/magazine\/wp-content\/uploads\/2025\/04\/ChatGPT-Image-15-abr-2025-10_14_09-1-180x128.png",180,128,true],"genesis-singular-images":["https:\/\/www.codemotion.com\/magazine\/wp-content\/uploads\/2025\/04\/ChatGPT-Image-15-abr-2025-10_14_09-1-896x504.png",896,504,true],"archive-featured":["https:\/\/www.codemotion.com\/magazine\/wp-content\/uploads\/2025\/04\/ChatGPT-Image-15-abr-2025-10_14_09-1-400x225.png",400,225,true],"gb-block-post-grid-landscape":["https:\/\/www.codemotion.com\/magazine\/wp-content\/uploads\/2025\/04\/ChatGPT-Image-15-abr-2025-10_14_09-1-600x400.png",600,400,true],"gb-block-post-grid-square":["https:\/\/www.codemotion.com\/magazine\/wp-content\/uploads\/2025\/04\/ChatGPT-Image-15-abr-2025-10_14_09-1-600x600.png",600,600,true]},"uagb_author_info":{"display_name":"Roberto Carrancio","author_link":"https:\/\/www.codemotion.com\/magazine\/author\/rocarrancio\/"},"uagb_comment_info":0,"uagb_excerpt":"En esta tercera entrega de nuestra serie de \u00edndices vamos a hablar de los \u00edndices clustered. Para entender lo que vamos a ver tenemos que tener claro de antemano lo que vimos en la primera y la segunda entrada de esta serie. Si a\u00fan no lo has le\u00eddo es el momento, para aqu\u00ed mismo y&#8230;&hellip;","lang":"es","_links":{"self":[{"href":"https:\/\/www.codemotion.com\/magazine\/wp-json\/wp\/v2\/posts\/32393","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.codemotion.com\/magazine\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.codemotion.com\/magazine\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.codemotion.com\/magazine\/wp-json\/wp\/v2\/users\/321"}],"replies":[{"embeddable":true,"href":"https:\/\/www.codemotion.com\/magazine\/wp-json\/wp\/v2\/comments?post=32393"}],"version-history":[{"count":1,"href":"https:\/\/www.codemotion.com\/magazine\/wp-json\/wp\/v2\/posts\/32393\/revisions"}],"predecessor-version":[{"id":32394,"href":"https:\/\/www.codemotion.com\/magazine\/wp-json\/wp\/v2\/posts\/32393\/revisions\/32394"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.codemotion.com\/magazine\/wp-json\/wp\/v2\/media\/32706"}],"wp:attachment":[{"href":"https:\/\/www.codemotion.com\/magazine\/wp-json\/wp\/v2\/media?parent=32393"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.codemotion.com\/magazine\/wp-json\/wp\/v2\/categories?post=32393"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.codemotion.com\/magazine\/wp-json\/wp\/v2\/tags?post=32393"},{"taxonomy":"collections","embeddable":true,"href":"https:\/\/www.codemotion.com\/magazine\/wp-json\/wp\/v2\/collections?post=32393"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}