{"id":69202,"date":"2021-12-02T19:56:00","date_gmt":"2021-12-02T19:56:00","guid":{"rendered":"https:\/\/enviame.io\/?p=69202"},"modified":"2024-05-02T10:35:59","modified_gmt":"2024-05-02T14:35:59","slug":"indices-en-bbdd-relacionales","status":"publish","type":"post","link":"https:\/\/enviame.somosforma.dev\/pe\/indices-en-bbdd-relacionales\/","title":{"rendered":"\u00cdndices en BBDD relacionales"},"content":{"rendered":"<p>Hace algunos meses, abordamos con el equipo una historia de usuario en donde nos informaban un lento rendimiento en una vista del sistema. Analizando la situaci\u00f3n, verificamos que el problema proven\u00eda de una consulta que no tomaba el \u00edndice correcto para la petici\u00f3n que se estaba solicitando.&nbsp;<\/p>\n\n\n\n<p>Esta circunstancia me motiv\u00f3 a escribir este art\u00edculo, en donde se analizar\u00e1 un caso simple de ejemplo, en el que se requiere crear un \u00edndice en una tabla para optimizar una consulta.&nbsp;<\/p>\n\n\n\n<p>El objetivo no es definir qu\u00e9 son los \u00edndices o ahondar en sus caracter\u00edsticas, sino analizar c\u00f3mo enfrentar este tipo de problemas y qu\u00e9 estrategias podemos implementar para solucionarlos.&nbsp;<\/p>\n\n\n<div class=\"wp-block-image\">\n<figure class=\"alignleft size-full is-resized\"><img decoding=\"async\" data-src=\"https:\/\/enviame.somosforma.dev\/wp-content\/webp-express\/webp-images\/doc-root\/wp-content\/uploads\/2021\/12\/image.jpeg.webp\" alt=\"\" class=\"wp-image-9274 lazyload\" width=\"183\" height=\"232\" data-srcset=\"https:\/\/enviame.somosforma.dev\/wp-content\/webp-express\/webp-images\/doc-root\/wp-content\/uploads\/2021\/12\/image.jpeg.webp 256w, https:\/\/enviame.somosforma.dev\/wp-content\/webp-express\/webp-images\/doc-root\/wp-content\/uploads\/2021\/12\/image-237x300.jpeg.webp 237w\" data-sizes=\"(max-width: 183px) 100vw, 183px\" src=\"data:image\/gif;base64,R0lGODlhAQABAAAAACH5BAEKAAEALAAAAAABAAEAAAICTAEAOw==\" style=\"--smush-placeholder-width: 183px; --smush-placeholder-aspect-ratio: 183\/232;\" \/><\/figure><\/div>\n\n\n<p>Para ello, vamos a revisar un ejemplo sencillo. Imag\u00ednense que tenemos una base de datos MySQL con la siguiente tabla&nbsp;<em>users<\/em>, donde la misma tiene un mill\u00f3n de registros y necesitamos filtrar todos los usuarios activos creados en los \u00faltimos 3 meses, que se hayan registrado mediante su celular y que est\u00e9 ordenado por apellido y nombre.<\/p>\n\n\n\n<p>Cuando el motor de base de datos ejecuta la consulta, verifica qu\u00e9 \u00edndice se ajusta mejor a la petici\u00f3n que estamos realizando. Si no existen \u00edndices en la tabla o ninguno se ajusta a nuestra consulta, se realizar\u00e1 un&nbsp;<em>full table scan<\/em>, que leer\u00e1 cada uno de los registros aplicando los par\u00e1metros de b\u00fasqueda que hemos especificado. Esta operaci\u00f3n tendr\u00e1 muy mala performance, por lo que, es necesario analizar qu\u00e9 \u00edndice conviene crear para aumentar la velocidad de la consulta.&nbsp;<br><\/p>\n\n\n\n<p>Algunos pensar\u00e1n en la idea de crear \u00edndices por cada uno de los campos de la tabla, lo cual es un grave error. La creaci\u00f3n masiva de \u00edndices en una tabla, conlleva efectos adversos:<\/p>\n\n\n\n<ul class=\"wp-block-list\"><li>Cada \u00edndice ocupa espacio de almacenamiento en nuestra base de datos.<\/li><li>La velocidad en las operaciones de&nbsp;<em>insert<\/em>,&nbsp;<em>update<\/em>&nbsp;y&nbsp;<em>delete<\/em>&nbsp;puede verse afectada, ya que los \u00edndices de la tabla deben ser actualizados, ante cada una de estas acciones.<\/li><\/ul>\n\n\n\n<p>Por lo tanto, la primera decisi\u00f3n que debemos tomar es si conviene crear un \u00edndice simple o uno compuesto. Los compuestos son \u00fatiles cuando tenemos campos que se consultan com\u00fanmente juntos y ambos tienen un alto grado de cardinalidad (a mayor cantidad de valores \u00fanicos, mayor cardinalidad).<\/p>\n\n\n\n<p>Si analizamos nuestra tabla y un posible modelo de negocio, podemos suponer que los campos&nbsp;<em>created_at<\/em>&nbsp;y&nbsp;<em>active<\/em>&nbsp;podr\u00edan aparecer juntos en varias peticiones. Pero si verificamos su cardinalidad, el campo&nbsp;<em>active<\/em>&nbsp;tiene una muy baja (solo 2 valores posibles toma este campo), lo que hace que la performance de crear un \u00edndice \u00fanico por&nbsp;<em>created_at<\/em>&nbsp;y crear un \u00edndice compuesto por&nbsp;<em>created_at<\/em>&nbsp;y&nbsp;<em>active<\/em>&nbsp;sea similar.<\/p>\n\n\n\n<p>Por ende, la mejor decisi\u00f3n para nuestro caso hipot\u00e9tico, es crear un \u00edndice simple por el campo&nbsp;<em>created_at<\/em>.<\/p>\n\n\n\n<p>A continuaci\u00f3n, dejo algunas screens de las pruebas realizadas:<\/p>\n\n\n\n<p><em>Cantidad total de registros en la tabla<\/em><\/p>\n\n\n\n<figure class=\"wp-block-image size-full is-resized\"><img fetchpriority=\"high\" decoding=\"async\" src=\"https:\/\/enviame.somosforma.dev\/wp-content\/webp-express\/webp-images\/doc-root\/wp-content\/uploads\/2021\/12\/image-1.jpeg.webp\" alt=\"\" class=\"wp-image-9275\" width=\"382\" height=\"258\" srcset=\"https:\/\/enviame.somosforma.dev\/wp-content\/webp-express\/webp-images\/doc-root\/wp-content\/uploads\/2021\/12\/image-1.jpeg.webp 476w, https:\/\/enviame.somosforma.dev\/wp-content\/webp-express\/webp-images\/doc-root\/wp-content\/uploads\/2021\/12\/image-1-300x203.jpeg.webp 300w\" sizes=\"(max-width: 382px) 100vw, 382px\" \/><\/figure>\n\n\n\n<p><em>Plan de acci\u00f3n del motor de base de datos, donde se especifica que NO se va a utilizar ning\u00fan \u00edndice en la ejecuci\u00f3n de la consulta.<\/em><\/p>\n\n\n\n<figure class=\"wp-block-image size-full is-resized\"><img decoding=\"async\" data-src=\"https:\/\/enviame.somosforma.dev\/wp-content\/webp-express\/webp-images\/doc-root\/wp-content\/uploads\/2021\/12\/image-2.jpeg.webp\" alt=\"\" class=\"wp-image-9276 lazyload\" width=\"750\" height=\"221\" data-srcset=\"https:\/\/enviame.somosforma.dev\/wp-content\/webp-express\/webp-images\/doc-root\/wp-content\/uploads\/2021\/12\/image-2.jpeg.webp 904w, https:\/\/enviame.somosforma.dev\/wp-content\/webp-express\/webp-images\/doc-root\/wp-content\/uploads\/2021\/12\/image-2-300x88.jpeg.webp 300w, https:\/\/enviame.somosforma.dev\/wp-content\/webp-express\/webp-images\/doc-root\/wp-content\/uploads\/2021\/12\/image-2-768x226.jpeg.webp 768w, https:\/\/enviame.somosforma.dev\/wp-content\/webp-express\/webp-images\/doc-root\/wp-content\/uploads\/2021\/12\/image-2-600x177.jpeg.webp 600w\" data-sizes=\"(max-width: 750px) 100vw, 750px\" src=\"data:image\/gif;base64,R0lGODlhAQABAAAAACH5BAEKAAEALAAAAAABAAEAAAICTAEAOw==\" style=\"--smush-placeholder-width: 750px; --smush-placeholder-aspect-ratio: 750\/221;\" \/><\/figure>\n\n\n\n<p>La ejecuci\u00f3n de la consulta tard\u00f3&nbsp;<strong><span class=\"has-inline-color has-vivid-red-color\">1118 ms<\/span><\/strong>&nbsp;devolviendo&nbsp;<strong>816<\/strong>&nbsp;registros.<\/p>\n\n\n\n<figure class=\"wp-block-image size-full is-resized\"><img decoding=\"async\" data-src=\"https:\/\/enviame.somosforma.dev\/wp-content\/webp-express\/webp-images\/doc-root\/wp-content\/uploads\/2021\/12\/image-3.jpeg.webp\" alt=\"\" class=\"wp-image-9277 lazyload\" width=\"746\" height=\"39\" data-srcset=\"https:\/\/enviame.somosforma.dev\/wp-content\/webp-express\/webp-images\/doc-root\/wp-content\/uploads\/2021\/12\/image-3.jpeg.webp 904w, https:\/\/enviame.somosforma.dev\/wp-content\/webp-express\/webp-images\/doc-root\/wp-content\/uploads\/2021\/12\/image-3-300x16.jpeg.webp 300w, https:\/\/enviame.somosforma.dev\/wp-content\/webp-express\/webp-images\/doc-root\/wp-content\/uploads\/2021\/12\/image-3-768x41.jpeg.webp 768w, https:\/\/enviame.somosforma.dev\/wp-content\/webp-express\/webp-images\/doc-root\/wp-content\/uploads\/2021\/12\/image-3-600x32.jpeg.webp 600w\" data-sizes=\"(max-width: 746px) 100vw, 746px\" src=\"data:image\/gif;base64,R0lGODlhAQABAAAAACH5BAEKAAEALAAAAAABAAEAAAICTAEAOw==\" style=\"--smush-placeholder-width: 746px; --smush-placeholder-aspect-ratio: 746\/39;\" \/><\/figure>\n\n\n\n<p>Creaci\u00f3n de \u00edndice&nbsp;<em>BTree<\/em>&nbsp;por campo&nbsp;<em>created_at<\/em><br><br><\/p>\n\n\n\n<figure class=\"wp-block-image size-full is-resized\"><img decoding=\"async\" data-src=\"https:\/\/enviame.somosforma.dev\/wp-content\/webp-express\/webp-images\/doc-root\/wp-content\/uploads\/2021\/12\/image-4.jpeg.webp\" alt=\"\" class=\"wp-image-9278 lazyload\" width=\"713\" height=\"105\" data-srcset=\"https:\/\/enviame.somosforma.dev\/wp-content\/webp-express\/webp-images\/doc-root\/wp-content\/uploads\/2021\/12\/image-4.jpeg.webp 904w, https:\/\/enviame.somosforma.dev\/wp-content\/webp-express\/webp-images\/doc-root\/wp-content\/uploads\/2021\/12\/image-4-300x44.jpeg.webp 300w, https:\/\/enviame.somosforma.dev\/wp-content\/webp-express\/webp-images\/doc-root\/wp-content\/uploads\/2021\/12\/image-4-768x114.jpeg.webp 768w, https:\/\/enviame.somosforma.dev\/wp-content\/webp-express\/webp-images\/doc-root\/wp-content\/uploads\/2021\/12\/image-4-600x89.jpeg.webp 600w\" data-sizes=\"(max-width: 713px) 100vw, 713px\" src=\"data:image\/gif;base64,R0lGODlhAQABAAAAACH5BAEKAAEALAAAAAABAAEAAAICTAEAOw==\" style=\"--smush-placeholder-width: 713px; --smush-placeholder-aspect-ratio: 713\/105;\" \/><\/figure>\n\n\n\n<p><em>Plan de acci\u00f3n del motor de base de datos, donde se especifica que va a utilizar el \u00edndice users_created_at_IDX en la ejecuci\u00f3n de la consulta.<\/em><\/p>\n\n\n\n<figure class=\"wp-block-image size-full\"><img decoding=\"async\" width=\"904\" height=\"238\" data-src=\"https:\/\/enviame.somosforma.dev\/wp-content\/webp-express\/webp-images\/doc-root\/wp-content\/uploads\/2021\/12\/image-5.jpeg.webp\" alt=\"\" class=\"wp-image-9279 lazyload\" data-srcset=\"https:\/\/enviame.somosforma.dev\/wp-content\/webp-express\/webp-images\/doc-root\/wp-content\/uploads\/2021\/12\/image-5.jpeg.webp 904w, https:\/\/enviame.somosforma.dev\/wp-content\/webp-express\/webp-images\/doc-root\/wp-content\/uploads\/2021\/12\/image-5-300x79.jpeg.webp 300w, https:\/\/enviame.somosforma.dev\/wp-content\/webp-express\/webp-images\/doc-root\/wp-content\/uploads\/2021\/12\/image-5-768x202.jpeg.webp 768w, https:\/\/enviame.somosforma.dev\/wp-content\/webp-express\/webp-images\/doc-root\/wp-content\/uploads\/2021\/12\/image-5-600x158.jpeg.webp 600w\" data-sizes=\"(max-width: 904px) 100vw, 904px\" src=\"data:image\/gif;base64,R0lGODlhAQABAAAAACH5BAEKAAEALAAAAAABAAEAAAICTAEAOw==\" style=\"--smush-placeholder-width: 904px; --smush-placeholder-aspect-ratio: 904\/238;\" \/><\/figure>\n\n\n\n<p><em>La ejecuci\u00f3n de la consulta tard\u00f3&nbsp;<strong><span style=\"color:#0e9513\" class=\"has-inline-color\">74 ms<\/span><\/strong>&nbsp;devolviendo&nbsp;<strong>816<\/strong>&nbsp;registros.<\/em><\/p>\n\n\n\n<figure class=\"wp-block-image size-full\"><img decoding=\"async\" width=\"904\" height=\"48\" data-src=\"https:\/\/enviame.somosforma.dev\/wp-content\/webp-express\/webp-images\/doc-root\/wp-content\/uploads\/2021\/12\/image-6.jpeg.webp\" alt=\"\" class=\"wp-image-9280 lazyload\" data-srcset=\"https:\/\/enviame.somosforma.dev\/wp-content\/webp-express\/webp-images\/doc-root\/wp-content\/uploads\/2021\/12\/image-6.jpeg.webp 904w, https:\/\/enviame.somosforma.dev\/wp-content\/webp-express\/webp-images\/doc-root\/wp-content\/uploads\/2021\/12\/image-6-300x16.jpeg.webp 300w, https:\/\/enviame.somosforma.dev\/wp-content\/webp-express\/webp-images\/doc-root\/wp-content\/uploads\/2021\/12\/image-6-768x41.jpeg.webp 768w, https:\/\/enviame.somosforma.dev\/wp-content\/webp-express\/webp-images\/doc-root\/wp-content\/uploads\/2021\/12\/image-6-600x32.jpeg.webp 600w\" data-sizes=\"(max-width: 904px) 100vw, 904px\" src=\"data:image\/gif;base64,R0lGODlhAQABAAAAACH5BAEKAAEALAAAAAABAAEAAAICTAEAOw==\" style=\"--smush-placeholder-width: 904px; --smush-placeholder-aspect-ratio: 904\/48;\" \/><\/figure>\n\n\n\n<p>Como podr\u00e1n observar, aplicando el correcto \u00edndice, la consulta se ejecut\u00f3 15 veces m\u00e1s r\u00e1pido. Esto nos da la pauta de la importancia de aplicar \u00edndices en nuestras tablas.<\/p>\n\n\n\n<p>Para finalizar, les dejo algunas recomendaciones:<\/p>\n\n\n\n<ul class=\"wp-block-list\"><li>No usar \u00edndices en tablas con poca cantidad de datos.<\/li><li>Tener cuidado con la cantidad de \u00edndices que se utilizan en una tabla, ya que esto puede provocar una baja en el rendimiento de las operaciones de creaci\u00f3n, modificaci\u00f3n y eliminaci\u00f3n.<\/li><li>Elegir campos que tengan alta cardinalidad.<\/li><li>En los \u00edndices compuestos, el orden en que se crean las columnas INFLUYE. Estos pueden hacer uso de todas sus columnas o pueden usar solo algunas, pero solo tomando la parte m\u00e1s a la izquierda. Por ejemplo, si tenemos un \u00edndice compuesto por las columnas A, B y C, este servir\u00e1 como \u00edndice por: A, A-B y A-B-C.<\/li><li>Si se utiliza un \u00edndice compuesto, tratar de elegir en primer lugar un valor con mayor cardinalidad.<\/li><\/ul>","protected":false},"excerpt":{"rendered":"<p>Hace algunos meses, abordamos con el equipo una historia de usuario en donde nos informaban un lento rendimiento en una vista del sistema. Analizando la situaci\u00f3n, verificamos que el problema proven\u00eda de una consulta que no tomaba el \u00edndice correcto para la petici\u00f3n que se estaba solicitando.&nbsp; Esta circunstancia me motiv\u00f3 a escribir este art\u00edculo, en donde se analizar\u00e1 un caso simple de ejemplo, en el que se requiere crear un \u00edndice en una tabla para optimizar una consulta.&nbsp; El objetivo no es definir qu\u00e9 son los \u00edndices o ahondar en sus caracter\u00edsticas, sino analizar c\u00f3mo enfrentar este tipo de problemas y qu\u00e9 estrategias podemos implementar para solucionarlos.&nbsp; Para ello, vamos a revisar un ejemplo sencillo. Imag\u00ednense que tenemos una base de datos MySQL con la siguiente tabla&nbsp;users, donde la misma tiene un mill\u00f3n de registros y necesitamos filtrar todos los usuarios activos creados en los \u00faltimos 3 meses, que se hayan registrado mediante su celular y que est\u00e9 ordenado por apellido y nombre. Cuando el motor de base de datos ejecuta la consulta, verifica qu\u00e9 \u00edndice se ajusta mejor a la petici\u00f3n que estamos realizando. Si no existen \u00edndices en la tabla o ninguno se ajusta a nuestra consulta, se realizar\u00e1 un&nbsp;full table scan, que leer\u00e1 cada uno de los registros aplicando los par\u00e1metros de b\u00fasqueda que hemos especificado. Esta operaci\u00f3n tendr\u00e1 muy mala performance, por lo que, es necesario analizar qu\u00e9 \u00edndice conviene crear para aumentar la velocidad de la consulta.&nbsp; Algunos pensar\u00e1n en la idea de crear \u00edndices por cada uno de los campos de la tabla, lo cual es un grave error. La creaci\u00f3n masiva de \u00edndices en una tabla, conlleva efectos adversos: Cada \u00edndice ocupa espacio de almacenamiento en nuestra base de datos. La velocidad en las operaciones de&nbsp;insert,&nbsp;update&nbsp;y&nbsp;delete&nbsp;puede verse afectada, ya que los \u00edndices de la tabla deben ser actualizados, ante cada una de estas acciones. Por lo tanto, la primera decisi\u00f3n que debemos tomar es si conviene crear un \u00edndice simple o uno compuesto. Los compuestos son \u00fatiles cuando tenemos campos que se consultan com\u00fanmente juntos y ambos tienen un alto grado de cardinalidad (a mayor cantidad de valores \u00fanicos, mayor cardinalidad). Si analizamos nuestra tabla y un posible modelo de negocio, podemos suponer que los campos&nbsp;created_at&nbsp;y&nbsp;active&nbsp;podr\u00edan aparecer juntos en varias peticiones. Pero si verificamos su cardinalidad, el campo&nbsp;active&nbsp;tiene una muy baja (solo 2 valores posibles toma este campo), lo que hace que la performance de crear un \u00edndice \u00fanico por&nbsp;created_at&nbsp;y crear un \u00edndice compuesto por&nbsp;created_at&nbsp;y&nbsp;active&nbsp;sea similar. Por ende, la mejor decisi\u00f3n para nuestro caso hipot\u00e9tico, es crear un \u00edndice simple por el campo&nbsp;created_at. A continuaci\u00f3n, dejo algunas screens de las pruebas realizadas: Cantidad total de registros en la tabla Plan de acci\u00f3n del motor de base de datos, donde se especifica que NO se va a utilizar ning\u00fan \u00edndice en la ejecuci\u00f3n de la consulta. La ejecuci\u00f3n de la consulta tard\u00f3&nbsp;1118 ms&nbsp;devolviendo&nbsp;816&nbsp;registros. Creaci\u00f3n de \u00edndice&nbsp;BTree&nbsp;por campo&nbsp;created_at Plan de acci\u00f3n del motor de base de datos, donde se especifica que va a utilizar el \u00edndice users_created_at_IDX en la ejecuci\u00f3n de la consulta. La ejecuci\u00f3n de la consulta tard\u00f3&nbsp;74 ms&nbsp;devolviendo&nbsp;816&nbsp;registros. Como podr\u00e1n observar, aplicando el correcto \u00edndice, la consulta se ejecut\u00f3 15 veces m\u00e1s r\u00e1pido. Esto nos da la pauta de la importancia de aplicar \u00edndices en nuestras tablas. Para finalizar, les dejo algunas recomendaciones: No usar \u00edndices en tablas con poca cantidad de datos. Tener cuidado con la cantidad de \u00edndices que se utilizan en una tabla, ya que esto puede provocar una baja en el rendimiento de las operaciones de creaci\u00f3n, modificaci\u00f3n y eliminaci\u00f3n. Elegir campos que tengan alta cardinalidad. En los \u00edndices compuestos, el orden en que se crean las columnas INFLUYE. Estos pueden hacer uso de todas sus columnas o pueden usar solo algunas, pero solo tomando la parte m\u00e1s a la izquierda. Por ejemplo, si tenemos un \u00edndice compuesto por las columnas A, B y C, este servir\u00e1 como \u00edndice por: A, A-B y A-B-C. Si se utiliza un \u00edndice compuesto, tratar de elegir en primer lugar un valor con mayor cardinalidad.<\/p>","protected":false},"author":1,"featured_media":9295,"comment_status":"closed","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_acf_changed":false,"_uag_custom_page_level_css":"","footnotes":""},"categories":[1],"tags":[],"class_list":["post-69202","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-sin-categorizar"],"acf":[],"uagb_featured_image_src":{"full":["https:\/\/enviame.somosforma.dev\/wp-content\/uploads\/2021\/12\/95003B04-3A36-41AB-AA55-9AF3C0089D5C.jpeg",640,427,false],"thumbnail":["https:\/\/enviame.somosforma.dev\/wp-content\/uploads\/2021\/12\/95003B04-3A36-41AB-AA55-9AF3C0089D5C-150x150.jpeg",150,150,true],"medium":["https:\/\/enviame.somosforma.dev\/wp-content\/uploads\/2021\/12\/95003B04-3A36-41AB-AA55-9AF3C0089D5C-300x200.jpeg",300,200,true],"medium_large":["https:\/\/enviame.somosforma.dev\/wp-content\/uploads\/2021\/12\/95003B04-3A36-41AB-AA55-9AF3C0089D5C.jpeg",640,427,false],"large":["https:\/\/enviame.somosforma.dev\/wp-content\/uploads\/2021\/12\/95003B04-3A36-41AB-AA55-9AF3C0089D5C.jpeg",640,427,false],"1536x1536":["https:\/\/enviame.somosforma.dev\/wp-content\/uploads\/2021\/12\/95003B04-3A36-41AB-AA55-9AF3C0089D5C.jpeg",640,427,false],"2048x2048":["https:\/\/enviame.somosforma.dev\/wp-content\/uploads\/2021\/12\/95003B04-3A36-41AB-AA55-9AF3C0089D5C.jpeg",640,427,false]},"uagb_author_info":{"display_name":"enviameioadm","author_link":"https:\/\/enviame.somosforma.dev\/pe\/author\/enviameioadm\/"},"uagb_comment_info":0,"uagb_excerpt":"Hace algunos meses, abordamos con el equipo una historia de usuario en donde nos informaban un lento rendimiento en una vista del sistema. Analizando la situaci\u00f3n, verificamos que el problema proven\u00eda de una consulta que no tomaba el \u00edndice correcto para la petici\u00f3n que se estaba solicitando.&nbsp; Esta circunstancia me motiv\u00f3 a escribir este art\u00edculo,&hellip;","yoast_head":"<!-- This site is optimized with the Yoast SEO Premium plugin v15.9 - https:\/\/yoast.com\/wordpress\/plugins\/seo\/ -->\n<title>\u00cdndices en BBDD relacionales - Env\u00edame<\/title>\n<meta name=\"description\" content=\"Descubre c\u00f3mo optimizar el rendimiento de tus bases de datos relacionales utilizando \u00edndices correctos. \u00a1Haz clic para aprender m\u00e1s!\" \/>\n<meta name=\"robots\" content=\"noindex, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<meta property=\"og:locale\" content=\"es_ES\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"\u00cdndices en BBDD relacionales - Env\u00edame\" \/>\n<meta property=\"og:description\" content=\"Descubre c\u00f3mo optimizar el rendimiento de tus bases de datos relacionales utilizando \u00edndices correctos. \u00a1Haz clic para aprender m\u00e1s!\" \/>\n<meta property=\"og:url\" content=\"https:\/\/enviame.io\/indices-en-bbdd-relacionales\/\" \/>\n<meta property=\"og:site_name\" content=\"Env\u00edame\" \/>\n<meta property=\"article:published_time\" content=\"2021-12-02T19:56:00+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2024-05-02T14:35:59+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/enviame.somosforma.dev\/wp-content\/uploads\/2021\/12\/95003B04-3A36-41AB-AA55-9AF3C0089D5C.jpeg\" \/>\n\t<meta property=\"og:image:width\" content=\"640\" \/>\n\t<meta property=\"og:image:height\" content=\"427\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:label1\" content=\"Est. reading time\">\n\t<meta name=\"twitter:data1\" content=\"5 minutos\">\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"Organization\",\"@id\":\"https:\/\/enviame.somosforma.dev\/#organization\",\"name\":\"Env\\u00edame\",\"url\":\"https:\/\/enviame.somosforma.dev\/\",\"sameAs\":[],\"logo\":{\"@type\":\"ImageObject\",\"@id\":\"https:\/\/enviame.somosforma.dev\/#logo\",\"inLanguage\":\"es-PE\",\"url\":\"https:\/\/enviame.somosforma.dev\/wp-content\/uploads\/2020\/09\/logo-enviame-dark.png\",\"width\":678,\"height\":171,\"caption\":\"Env\\u00edame\"},\"image\":{\"@id\":\"https:\/\/enviame.somosforma.dev\/#logo\"}},{\"@type\":\"WebSite\",\"@id\":\"https:\/\/enviame.somosforma.dev\/#website\",\"url\":\"https:\/\/enviame.somosforma.dev\/\",\"name\":\"Env\\u00edame\",\"description\":\"Plataforma de env\\u00edos multicourier I E-commerce\",\"publisher\":{\"@id\":\"https:\/\/enviame.somosforma.dev\/#organization\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":\"https:\/\/enviame.somosforma.dev\/?s={search_term_string}\",\"query-input\":\"required name=search_term_string\"}],\"inLanguage\":\"es-PE\"},{\"@type\":\"ImageObject\",\"@id\":\"https:\/\/enviame.io\/indices-en-bbdd-relacionales\/#primaryimage\",\"inLanguage\":\"es-PE\",\"url\":\"https:\/\/enviame.somosforma.dev\/wp-content\/uploads\/2021\/12\/95003B04-3A36-41AB-AA55-9AF3C0089D5C.jpeg\",\"width\":640,\"height\":427},{\"@type\":\"WebPage\",\"@id\":\"https:\/\/enviame.io\/indices-en-bbdd-relacionales\/#webpage\",\"url\":\"https:\/\/enviame.io\/indices-en-bbdd-relacionales\/\",\"name\":\"\\u00cdndices en BBDD relacionales - Env\\u00edame\",\"isPartOf\":{\"@id\":\"https:\/\/enviame.somosforma.dev\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\/\/enviame.io\/indices-en-bbdd-relacionales\/#primaryimage\"},\"datePublished\":\"2021-12-02T19:56:00+00:00\",\"dateModified\":\"2024-05-02T14:35:59+00:00\",\"description\":\"Descubre c\\u00f3mo optimizar el rendimiento de tus bases de datos relacionales utilizando \\u00edndices correctos. \\u00a1Haz clic para aprender m\\u00e1s!\",\"breadcrumb\":{\"@id\":\"https:\/\/enviame.io\/indices-en-bbdd-relacionales\/#breadcrumb\"},\"inLanguage\":\"es-PE\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/enviame.io\/indices-en-bbdd-relacionales\/\"]}]},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/enviame.io\/indices-en-bbdd-relacionales\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"item\":{\"@type\":\"WebPage\",\"@id\":\"https:\/\/enviame.somosforma.dev\/\",\"url\":\"https:\/\/enviame.somosforma.dev\/\",\"name\":\"Portada\"}},{\"@type\":\"ListItem\",\"position\":2,\"item\":{\"@type\":\"WebPage\",\"@id\":\"https:\/\/enviame.somosforma.dev\/pe\/indices-en-bbdd-relacionales\/\",\"url\":\"https:\/\/enviame.somosforma.dev\/pe\/indices-en-bbdd-relacionales\/\",\"name\":\"\\u00cdndices en BBDD relacionales\"}}]},{\"@type\":\"Article\",\"@id\":\"https:\/\/enviame.io\/indices-en-bbdd-relacionales\/#article\",\"isPartOf\":{\"@id\":\"https:\/\/enviame.io\/indices-en-bbdd-relacionales\/#webpage\"},\"author\":{\"@id\":\"https:\/\/enviame.somosforma.dev\/#\/schema\/person\/4a1f4fd0b1fa4eb05d396a2eef7e7ed5\"},\"headline\":\"\\u00cdndices en BBDD relacionales\",\"datePublished\":\"2021-12-02T19:56:00+00:00\",\"dateModified\":\"2024-05-02T14:35:59+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\/\/enviame.io\/indices-en-bbdd-relacionales\/#webpage\"},\"publisher\":{\"@id\":\"https:\/\/enviame.somosforma.dev\/#organization\"},\"image\":{\"@id\":\"https:\/\/enviame.io\/indices-en-bbdd-relacionales\/#primaryimage\"},\"articleSection\":\"Sin categorizar\",\"inLanguage\":\"es-PE\"},{\"@type\":\"Person\",\"@id\":\"https:\/\/enviame.somosforma.dev\/#\/schema\/person\/4a1f4fd0b1fa4eb05d396a2eef7e7ed5\",\"name\":\"enviameioadm\",\"image\":{\"@type\":\"ImageObject\",\"@id\":\"https:\/\/enviame.somosforma.dev\/#personlogo\",\"inLanguage\":\"es-PE\",\"url\":\"https:\/\/secure.gravatar.com\/avatar\/18478b563ca71196b4d600a2df0014f7?s=96&d=mm&r=g\",\"caption\":\"enviameioadm\"},\"sameAs\":[\"https:\/\/enviame.somosforma.dev\"]}]}<\/script>\n<!-- \/ Yoast SEO Premium plugin. -->","_links":{"self":[{"href":"https:\/\/enviame.somosforma.dev\/pe\/wp-json\/wp\/v2\/posts\/69202"}],"collection":[{"href":"https:\/\/enviame.somosforma.dev\/pe\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/enviame.somosforma.dev\/pe\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/enviame.somosforma.dev\/pe\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/enviame.somosforma.dev\/pe\/wp-json\/wp\/v2\/comments?post=69202"}],"version-history":[{"count":0,"href":"https:\/\/enviame.somosforma.dev\/pe\/wp-json\/wp\/v2\/posts\/69202\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/enviame.somosforma.dev\/pe\/wp-json\/wp\/v2\/media\/9295"}],"wp:attachment":[{"href":"https:\/\/enviame.somosforma.dev\/pe\/wp-json\/wp\/v2\/media?parent=69202"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/enviame.somosforma.dev\/pe\/wp-json\/wp\/v2\/categories?post=69202"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/enviame.somosforma.dev\/pe\/wp-json\/wp\/v2\/tags?post=69202"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}