{"id":656,"date":"2026-04-08T11:30:17","date_gmt":"2026-04-08T14:30:17","guid":{"rendered":"https:\/\/wiki.gobiernoriocuarto.gob.ar\/?p=656"},"modified":"2026-04-08T11:32:20","modified_gmt":"2026-04-08T14:32:20","slug":"buenas-practicas-para-optimizar-la-navegacion-en-base-de-datos","status":"publish","type":"post","link":"https:\/\/wiki.gobiernoriocuarto.gob.ar\/?p=656","title":{"rendered":"Buenas pr\u00e1cticas para optimizar la navegaci\u00f3n en base de datos"},"content":{"rendered":"<h1 data-section-id=\"14ylkc3\" data-start=\"196\" data-end=\"273\">\ud83e\udde0 Buenas pr\u00e1cticas para optimizar la navegaci\u00f3n en base de datos<\/h1>\n<p data-start=\"275\" data-end=\"515\">Despu\u00e9s de trabajar con consultas pesadas y migraciones (sobre todo de GX9 a GX18), hay varias cosas que impactan much\u00edsimo en la performance. Muchas no son obvias al principio, pero cuando las aplic\u00e1s bien, la diferencia se nota enseguida.<\/p>\n<hr data-start=\"517\" data-end=\"520\" \/>\n<h2 data-section-id=\"3w93w\" data-start=\"522\" data-end=\"577\">\u26a1 1. Evitar funciones sobre atributos en los filtros<\/h2>\n<p data-start=\"579\" data-end=\"618\">Este es uno de los errores m\u00e1s comunes.<\/p>\n<p data-start=\"620\" data-end=\"635\">Ejemplo t\u00edpico:<\/p>\n<div class=\"relative w-full mt-4 mb-1\">\n<div class=\"\">\n<div class=\"relative\">\n<div class=\"h-full min-h-0 min-w-0\">\n<div class=\"h-full min-h-0 min-w-0\">\n<div class=\"border border-token-border-light border-radius-3xl corner-superellipse\/1.1 rounded-3xl\">\n<div class=\"h-full w-full border-radius-3xl bg-token-bg-elevated-secondary corner-superellipse\/1.1 overflow-clip rounded-3xl lxnfua_clipPathFallback\">\n<div class=\"pointer-events-none absolute inset-x-4 top-12 bottom-4\">\n<div class=\"pointer-events-none sticky z-40 shrink-0 z-1!\">\n<div class=\"sticky bg-token-border-light\">\u00a0<\/div>\n<\/div>\n<\/div>\n<div class=\"w-full overflow-x-hidden overflow-y-auto\">\n<div class=\"relative z-0 flex max-w-full\">\n<div id=\"code-block-viewer\" class=\"q9tKkq_viewer cm-editor z-10 light:cm-light dark:cm-light flex h-full w-full flex-col items-stretch \u037ck \u037cy\" dir=\"ltr\">\n<div class=\"cm-scroller\">\n<div class=\"cm-content q9tKkq_readonly\"><strong>Upper(Trim(TDeTit)) Like Upper(&amp;TDeNomCom)<\/strong><\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<div class=\"\">\n<div class=\"\">\u00a0<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<p data-start=\"690\" data-end=\"858\">A simple vista parece correcto, pero internamente rompe el uso de \u00edndices. La base de datos tiene que evaluar esa funci\u00f3n fila por fila, lo que termina en un full scan.<\/p>\n<p data-start=\"860\" data-end=\"874\">\u2714 Lo mejor es:<\/p>\n<div class=\"relative w-full mt-4 mb-1\">\n<div class=\"\">\n<div class=\"relative\">\n<div class=\"h-full min-h-0 min-w-0\">\n<div class=\"h-full min-h-0 min-w-0\">\n<div class=\"border border-token-border-light border-radius-3xl corner-superellipse\/1.1 rounded-3xl\">\n<div class=\"h-full w-full border-radius-3xl bg-token-bg-elevated-secondary corner-superellipse\/1.1 overflow-clip rounded-3xl lxnfua_clipPathFallback\">\n<div class=\"pointer-events-none absolute inset-x-4 top-12 bottom-4\">\n<div class=\"pointer-events-none sticky z-40 shrink-0 z-1!\">\n<div class=\"sticky bg-token-border-light\">\u00a0<\/div>\n<\/div>\n<\/div>\n<div class=\"w-full overflow-x-hidden overflow-y-auto\">\n<div class=\"relative z-0 flex max-w-full\">\n<div id=\"code-block-viewer\" class=\"q9tKkq_viewer cm-editor z-10 light:cm-light dark:cm-light flex h-full w-full flex-col items-stretch \u037ck \u037cy\" dir=\"ltr\">\n<div class=\"cm-scroller\">\n<div class=\"cm-content q9tKkq_readonly\"><strong>TDeTit Like &amp;TDeNomCom<\/strong><\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<div class=\"\">\n<div class=\"\">\u00a0<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<p data-start=\"909\" data-end=\"939\">Y preparar el par\u00e1metro antes:<\/p>\n<div class=\"relative w-full mt-4 mb-1\">\n<div class=\"\">\n<div class=\"relative\">\n<div class=\"h-full min-h-0 min-w-0\">\n<div class=\"h-full min-h-0 min-w-0\">\n<div class=\"border border-token-border-light border-radius-3xl corner-superellipse\/1.1 rounded-3xl\">\n<div class=\"h-full w-full border-radius-3xl bg-token-bg-elevated-secondary corner-superellipse\/1.1 overflow-clip rounded-3xl lxnfua_clipPathFallback\">\n<div class=\"pointer-events-none absolute inset-x-4 top-12 bottom-4\">\n<div class=\"pointer-events-none sticky z-40 shrink-0 z-1!\">\n<div class=\"sticky bg-token-border-light\">\u00a0<\/div>\n<\/div>\n<\/div>\n<div class=\"w-full overflow-x-hidden overflow-y-auto\">\n<div class=\"relative z-0 flex max-w-full\">\n<div id=\"code-block-viewer\" class=\"q9tKkq_viewer cm-editor z-10 light:cm-light dark:cm-light flex h-full w-full flex-col items-stretch \u037ck \u037cy\" dir=\"ltr\">\n<div class=\"cm-scroller\">\n<div class=\"cm-content q9tKkq_readonly\"><strong>&amp;TDeNomCom = Trim(Upper(&amp;TDeNomCom)) + &#8216;%&#8217;;<\/strong><\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<div class=\"\">\n<div class=\"\">\u00a0<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<p data-start=\"995\" data-end=\"1103\">\ud83d\udc49 La regla mental es simple:<br data-start=\"1024\" data-end=\"1027\" \/><strong data-start=\"1027\" data-end=\"1103\">nunca aplicar funciones sobre columnas si quer\u00e9s que el \u00edndice funcione.<\/strong><\/p>\n<hr data-start=\"1105\" data-end=\"1108\" \/>\n<h2 data-section-id=\"61yofc\" data-start=\"1110\" data-end=\"1149\">\ud83d\udcca 2. Usar LIKE de forma inteligente<\/h2>\n<p data-start=\"1151\" data-end=\"1183\">No todos los <code data-start=\"1164\" data-end=\"1170\">LIKE<\/code> son iguales.<\/p>\n<ul data-start=\"1185\" data-end=\"1267\">\n<li data-section-id=\"un66y8\" data-start=\"1185\" data-end=\"1227\"><strong><code data-start=\"1187\" data-end=\"1203\">LIKE '%texto%'<\/code> \u2192 lento (no usa \u00edndice)<\/strong><\/li>\n<li data-section-id=\"1adh9vt\" data-start=\"1228\" data-end=\"1267\"><strong><code data-start=\"1230\" data-end=\"1245\">LIKE 'texto%'<\/code> \u2192 r\u00e1pido (usa \u00edndice)<\/strong><\/li>\n<\/ul>\n<p data-start=\"1269\" data-end=\"1368\">Si pod\u00e9s controlar c\u00f3mo busca el usuario, trat\u00e1 de llevarlo siempre a b\u00fasquedas tipo \u201cempieza con\u201d.<\/p>\n<p data-start=\"1370\" data-end=\"1378\">Ejemplo:<\/p>\n<div class=\"relative w-full mt-4 mb-1\">\n<div class=\"\">\n<div class=\"relative\">\n<div class=\"h-full min-h-0 min-w-0\">\n<div class=\"h-full min-h-0 min-w-0\">\n<div class=\"border border-token-border-light border-radius-3xl corner-superellipse\/1.1 rounded-3xl\">\n<div class=\"h-full w-full border-radius-3xl bg-token-bg-elevated-secondary corner-superellipse\/1.1 overflow-clip rounded-3xl lxnfua_clipPathFallback\">\n<div class=\"pointer-events-none absolute inset-x-4 top-12 bottom-4\">\n<div class=\"pointer-events-none sticky z-40 shrink-0 z-1!\">\n<div class=\"sticky bg-token-border-light\">\u00a0<\/div>\n<\/div>\n<\/div>\n<div class=\"w-full overflow-x-hidden overflow-y-auto\">\n<div class=\"relative z-0 flex max-w-full\">\n<div id=\"code-block-viewer\" class=\"q9tKkq_viewer cm-editor z-10 light:cm-light dark:cm-light flex h-full w-full flex-col items-stretch \u037ck \u037cy\" dir=\"ltr\">\n<div class=\"cm-scroller\">\n<div class=\"cm-content q9tKkq_readonly\"><strong>TDeTit Like &amp;TDeNomCom<\/strong><\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<div class=\"\">\n<div class=\"\">\u00a0<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<p data-start=\"1412\" data-end=\"1418\">donde:<\/p>\n<div class=\"relative w-full mt-4 mb-1\">\n<div class=\"\">\n<div class=\"relative\">\n<div class=\"h-full min-h-0 min-w-0\">\n<div class=\"h-full min-h-0 min-w-0\">\n<div class=\"border border-token-border-light border-radius-3xl corner-superellipse\/1.1 rounded-3xl\">\n<div class=\"h-full w-full border-radius-3xl bg-token-bg-elevated-secondary corner-superellipse\/1.1 overflow-clip rounded-3xl lxnfua_clipPathFallback\">\n<div class=\"pointer-events-none absolute inset-x-4 top-12 bottom-4\">\n<div class=\"pointer-events-none sticky z-40 shrink-0 z-1!\">\n<div class=\"sticky bg-token-border-light\">\u00a0<\/div>\n<\/div>\n<\/div>\n<div class=\"w-full overflow-x-hidden overflow-y-auto\">\n<div class=\"relative z-0 flex max-w-full\">\n<div id=\"code-block-viewer\" class=\"q9tKkq_viewer cm-editor z-10 light:cm-light dark:cm-light flex h-full w-full flex-col items-stretch \u037ck \u037cy\" dir=\"ltr\">\n<div class=\"cm-scroller\">\n<div class=\"cm-content q9tKkq_readonly\">&amp;TDeNomCom = &#8216;JUAN%&#8217;<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<div class=\"\">\n<div class=\"\">\u00a0<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<hr data-start=\"1451\" data-end=\"1454\" \/>\n<h2 data-section-id=\"1xrjhpb\" data-start=\"1456\" data-end=\"1520\">\ud83d\udd17 3. Evitar depender de una variable tipo &#8220;&amp;Orden&#8221; para todo<\/h2>\n<p data-start=\"1522\" data-end=\"1549\">A veces se arma l\u00f3gica as\u00ed:<\/p>\n<div class=\"relative w-full mt-4 mb-1\">\n<div class=\"\">\n<div class=\"relative\">\n<div class=\"h-full min-h-0 min-w-0\">\n<div class=\"h-full min-h-0 min-w-0\">\n<div class=\"border border-token-border-light border-radius-3xl corner-superellipse\/1.1 rounded-3xl\">\n<div class=\"h-full w-full border-radius-3xl bg-token-bg-elevated-secondary corner-superellipse\/1.1 overflow-clip rounded-3xl lxnfua_clipPathFallback\">\n<div class=\"pointer-events-none absolute inset-x-4 top-12 bottom-4\">\n<div class=\"pointer-events-none sticky z-40 shrink-0 z-1!\">\n<div class=\"sticky bg-token-border-light\">\u00a0<\/div>\n<\/div>\n<\/div>\n<div class=\"w-full overflow-x-hidden overflow-y-auto\">\n<div class=\"relative z-0 flex max-w-full\">\n<div id=\"code-block-viewer\" class=\"q9tKkq_viewer cm-editor z-10 light:cm-light dark:cm-light flex h-full w-full flex-col items-stretch \u037ck \u037cy\" dir=\"ltr\">\n<div class=\"cm-scroller\">\n<div class=\"cm-content q9tKkq_readonly\"><strong>TDeFalAno &gt;= &amp;TDeFalAno WHEN &amp;Orden = &#8216;FALL&#8217;<\/strong><br \/><strong>TDeDeu &gt;= &amp;TDeDeuIni WHEN &amp;Orden = &#8216;IMPO&#8217;<\/strong><\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<div class=\"\">\n<div class=\"\">\u00a0<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<p data-start=\"1648\" data-end=\"1662\">Esto hace que:<\/p>\n<ul data-start=\"1663\" data-end=\"1739\">\n<li data-section-id=\"1lywhzt\" data-start=\"1663\" data-end=\"1691\">los filtros no se combinen<\/li>\n<li data-section-id=\"aas171\" data-start=\"1692\" data-end=\"1739\">el optimizador genere planes menos eficientes<\/li>\n<\/ul>\n<p data-start=\"1741\" data-end=\"1781\">\u2714 Es mejor tener filtros independientes:<\/p>\n<div class=\"relative w-full mt-4 mb-1\">\n<div class=\"\">\n<div class=\"relative\">\n<div class=\"h-full min-h-0 min-w-0\">\n<div class=\"h-full min-h-0 min-w-0\">\n<div class=\"border border-token-border-light border-radius-3xl corner-superellipse\/1.1 rounded-3xl\">\n<div class=\"h-full w-full border-radius-3xl bg-token-bg-elevated-secondary corner-superellipse\/1.1 overflow-clip rounded-3xl lxnfua_clipPathFallback\">\n<div class=\"pointer-events-none absolute inset-x-4 top-12 bottom-4\">\n<div class=\"pointer-events-none sticky z-40 shrink-0 z-1!\">\n<div class=\"sticky bg-token-border-light\">\u00a0<\/div>\n<\/div>\n<\/div>\n<div class=\"w-full overflow-x-hidden overflow-y-auto\">\n<div class=\"relative z-0 flex max-w-full\">\n<div id=\"code-block-viewer\" class=\"q9tKkq_viewer cm-editor z-10 light:cm-light dark:cm-light flex h-full w-full flex-col items-stretch \u037ck \u037cy\" dir=\"ltr\">\n<div class=\"cm-scroller\">\n<div class=\"cm-content q9tKkq_readonly\"><strong>TDeFalAno &gt;= &amp;TDeFalAno WHEN &amp;TDeFalAno &lt;&gt; 0<\/strong><br \/><strong>TDeDeu &gt;= &amp;TDeDeuIni WHEN &amp;TDeDeuIni &lt;&gt; 0<\/strong><\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<div class=\"\">\n<div class=\"\">\u00a0<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<p data-start=\"1880\" data-end=\"1951\">\ud83d\udc49 Dej\u00e1 que la base de datos haga su trabajo. Est\u00e1 optimizada para eso.<\/p>\n<hr data-start=\"1953\" data-end=\"1956\" \/>\n<h2 data-section-id=\"iygga7\" data-start=\"1958\" data-end=\"2004\">\ud83e\udde9 4. Mantener los filtros simples y claros<\/h2>\n<p data-start=\"2006\" data-end=\"2052\">Mientras m\u00e1s \u201climpia\u201d sea la condici\u00f3n, mejor.<\/p>\n<p data-start=\"2054\" data-end=\"2072\">Evitar cosas como:<\/p>\n<div class=\"relative w-full mt-4 mb-1\">\n<div class=\"\">\n<div class=\"relative\">\n<div class=\"h-full min-h-0 min-w-0\">\n<div class=\"h-full min-h-0 min-w-0\">\n<div class=\"border border-token-border-light border-radius-3xl corner-superellipse\/1.1 rounded-3xl\">\n<div class=\"h-full w-full border-radius-3xl bg-token-bg-elevated-secondary corner-superellipse\/1.1 overflow-clip rounded-3xl lxnfua_clipPathFallback\">\n<div class=\"pointer-events-none absolute inset-x-4 top-12 bottom-4\">\n<div class=\"pointer-events-none sticky z-40 shrink-0 z-1!\">\n<div class=\"sticky bg-token-border-light\">\u00a0<\/div>\n<\/div>\n<\/div>\n<div class=\"w-full overflow-x-hidden overflow-y-auto\">\n<div class=\"relative z-0 flex max-w-full\">\n<div id=\"code-block-viewer\" class=\"q9tKkq_viewer cm-editor z-10 light:cm-light dark:cm-light flex h-full w-full flex-col items-stretch \u037ck \u037cy\" dir=\"ltr\">\n<div class=\"cm-scroller\">\n<div class=\"cm-content q9tKkq_readonly\"><strong>(AreCod = 24 OR AreCod &gt; 89)<\/strong><\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<div class=\"\">\n<div class=\"\">\u00a0<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<p data-start=\"2113\" data-end=\"2129\">Porque los <code data-start=\"2124\" data-end=\"2128\">OR<\/code>:<\/p>\n<ul data-start=\"2130\" data-end=\"2183\">\n<li data-section-id=\"18hlh0g\" data-start=\"2130\" data-end=\"2153\">suelen romper \u00edndices<\/li>\n<li data-section-id=\"f5himl\" data-start=\"2154\" data-end=\"2183\">generan planes m\u00e1s costosos<\/li>\n<\/ul>\n<p data-start=\"2185\" data-end=\"2270\">Si no queda otra, est\u00e1 bien, pero siempre es mejor dividir la l\u00f3gica o simplificarla.<\/p>\n<hr data-start=\"2272\" data-end=\"2275\" \/>\n<h2 data-section-id=\"ssfghp\" data-start=\"2277\" data-end=\"2311\">\ud83d\udcc5 5. Usar rangos correctamente<\/h2>\n<p data-start=\"2313\" data-end=\"2373\">Los rangos (<code data-start=\"2325\" data-end=\"2329\">&gt;=<\/code>, <code data-start=\"2331\" data-end=\"2335\">&lt;=<\/code>) son s\u00faper eficientes si hay \u00edndices.<\/p>\n<p data-start=\"2375\" data-end=\"2383\">Ejemplo:<\/p>\n<div class=\"relative w-full mt-4 mb-1\">\n<div class=\"\">\n<div class=\"relative\">\n<div class=\"h-full min-h-0 min-w-0\">\n<div class=\"h-full min-h-0 min-w-0\">\n<div class=\"border border-token-border-light border-radius-3xl corner-superellipse\/1.1 rounded-3xl\">\n<div class=\"h-full w-full border-radius-3xl bg-token-bg-elevated-secondary corner-superellipse\/1.1 overflow-clip rounded-3xl lxnfua_clipPathFallback\">\n<div class=\"pointer-events-none absolute inset-x-4 top-12 bottom-4\">\n<div class=\"pointer-events-none sticky z-40 shrink-0 z-1!\">\n<div class=\"sticky bg-token-border-light\">\u00a0<\/div>\n<\/div>\n<\/div>\n<div class=\"w-full overflow-x-hidden overflow-y-auto\">\n<div class=\"relative z-0 flex max-w-full\">\n<div id=\"code-block-viewer\" class=\"q9tKkq_viewer cm-editor z-10 light:cm-light dark:cm-light flex h-full w-full flex-col items-stretch \u037ck \u037cy\" dir=\"ltr\">\n<div class=\"cm-scroller\">\n<div class=\"cm-content q9tKkq_readonly\"><strong>TDeFecEmi &gt;= &amp;TDeFecIni<\/strong><br \/><strong>TDeFecEmi &lt;= &amp;TDeFecFin<\/strong><\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<div class=\"\">\n<div class=\"\">\u00a0<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<p data-start=\"2443\" data-end=\"2524\">\ud83d\udc49 Esto permite b\u00fasquedas muy r\u00e1pidas, sobre todo en campos de fecha o num\u00e9ricos.<\/p>\n<hr data-start=\"2526\" data-end=\"2529\" \/>\n<h2 data-section-id=\"6xrd28\" data-start=\"2531\" data-end=\"2576\">\ud83d\udd22 6. Preferir igualdad cuando corresponde<\/h2>\n<p data-start=\"2578\" data-end=\"2622\">Si sab\u00e9s que est\u00e1s buscando un valor exacto:<\/p>\n<div class=\"relative w-full mt-4 mb-1\">\n<div class=\"\">\n<div class=\"relative\">\n<div class=\"h-full min-h-0 min-w-0\">\n<div class=\"h-full min-h-0 min-w-0\">\n<div class=\"border border-token-border-light border-radius-3xl corner-superellipse\/1.1 rounded-3xl\">\n<div class=\"h-full w-full border-radius-3xl bg-token-bg-elevated-secondary corner-superellipse\/1.1 overflow-clip rounded-3xl lxnfua_clipPathFallback\">\n<div class=\"pointer-events-none absolute inset-x-4 top-12 bottom-4\">\n<div class=\"pointer-events-none sticky z-40 shrink-0 z-1!\">\n<div class=\"sticky bg-token-border-light\">\u00a0<\/div>\n<\/div>\n<\/div>\n<div class=\"w-full overflow-x-hidden overflow-y-auto\">\n<div class=\"relative z-0 flex max-w-full\">\n<div id=\"code-block-viewer\" class=\"q9tKkq_viewer cm-editor z-10 light:cm-light dark:cm-light flex h-full w-full flex-col items-stretch \u037ck \u037cy\" dir=\"ltr\">\n<div class=\"cm-scroller\">\n<div class=\"cm-content q9tKkq_readonly\"><strong>IdBien = &amp;IdBien<\/strong><\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<div class=\"\">\n<div class=\"\">\u00a0<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<p data-start=\"2652\" data-end=\"2671\">es mucho mejor que:<\/p>\n<div class=\"relative w-full mt-4 mb-1\">\n<div class=\"\">\n<div class=\"relative\">\n<div class=\"h-full min-h-0 min-w-0\">\n<div class=\"h-full min-h-0 min-w-0\">\n<div class=\"border border-token-border-light border-radius-3xl corner-superellipse\/1.1 rounded-3xl\">\n<div class=\"h-full w-full border-radius-3xl bg-token-bg-elevated-secondary corner-superellipse\/1.1 overflow-clip rounded-3xl lxnfua_clipPathFallback\">\n<div class=\"pointer-events-none absolute inset-x-4 top-12 bottom-4\">\n<div class=\"pointer-events-none sticky z-40 shrink-0 z-1!\">\n<div class=\"sticky bg-token-border-light\">\u00a0<\/div>\n<\/div>\n<\/div>\n<div class=\"w-full overflow-x-hidden overflow-y-auto\">\n<div class=\"relative z-0 flex max-w-full\">\n<div id=\"code-block-viewer\" class=\"q9tKkq_viewer cm-editor z-10 light:cm-light dark:cm-light flex h-full w-full flex-col items-stretch \u037ck \u037cy\" dir=\"ltr\">\n<div class=\"cm-scroller\">\n<div class=\"cm-content q9tKkq_readonly\"><strong>IdBien &gt;= &amp;IdBien<\/strong><\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<div class=\"\">\n<div class=\"\">\u00a0<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<p data-start=\"2702\" data-end=\"2709\">Porque:<\/p>\n<ul data-start=\"2710\" data-end=\"2766\">\n<li data-section-id=\"y0upfp\" data-start=\"2710\" data-end=\"2739\">reduce el conjunto de datos<\/li>\n<li data-section-id=\"6a4h70\" data-start=\"2740\" data-end=\"2766\">mejora el uso de \u00edndices<\/li>\n<\/ul>\n","protected":false},"excerpt":{"rendered":"<p>\ud83e\udde0 Buenas pr\u00e1cticas para optimizar la navegaci\u00f3n en base de datos Despu\u00e9s de trabajar con consultas pesadas y migraciones (sobre todo de GX9 a GX18), hay varias cosas que impactan much\u00edsimo en la performance. Muchas no son obvias al principio, pero cuando las aplic\u00e1s bien, la diferencia se nota enseguida. \u26a1 1. Evitar funciones sobre [&hellip;]<\/p>\n","protected":false},"author":10,"featured_media":657,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[20],"tags":[],"class_list":["post-656","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-docs"],"_links":{"self":[{"href":"https:\/\/wiki.gobiernoriocuarto.gob.ar\/index.php?rest_route=\/wp\/v2\/posts\/656","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/wiki.gobiernoriocuarto.gob.ar\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/wiki.gobiernoriocuarto.gob.ar\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/wiki.gobiernoriocuarto.gob.ar\/index.php?rest_route=\/wp\/v2\/users\/10"}],"replies":[{"embeddable":true,"href":"https:\/\/wiki.gobiernoriocuarto.gob.ar\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=656"}],"version-history":[{"count":2,"href":"https:\/\/wiki.gobiernoriocuarto.gob.ar\/index.php?rest_route=\/wp\/v2\/posts\/656\/revisions"}],"predecessor-version":[{"id":659,"href":"https:\/\/wiki.gobiernoriocuarto.gob.ar\/index.php?rest_route=\/wp\/v2\/posts\/656\/revisions\/659"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/wiki.gobiernoriocuarto.gob.ar\/index.php?rest_route=\/wp\/v2\/media\/657"}],"wp:attachment":[{"href":"https:\/\/wiki.gobiernoriocuarto.gob.ar\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=656"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/wiki.gobiernoriocuarto.gob.ar\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=656"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/wiki.gobiernoriocuarto.gob.ar\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=656"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}