{"id":26015,"date":"2023-02-03T21:58:12","date_gmt":"2023-02-03T21:58:12","guid":{"rendered":"https:\/\/building.nu.com\/leveraging-datomic-query-stats-to-optimize-clause-ordering\/"},"modified":"2024-05-22T14:21:08","modified_gmt":"2024-05-22T14:21:08","slug":"aprovechando-las-estadisticas-de-consultas-de-datomic-para-optimizar-el-orden-de-las-clausulas","status":"publish","type":"post","link":"https:\/\/building.nu.com\/es\/aprovechando-las-estadisticas-de-consultas-de-datomic-para-optimizar-el-orden-de-las-clausulas\/","title":{"rendered":"Aprovechando las estad\u00edsticas de consultas de Datomic para Optimizar el Orden de las Cl\u00e1usulas"},"content":{"rendered":"\n<p class=\"wp-block-paragraph\"><em>Escrito por: Keith Harper<\/em><br><em>Revisado por: Robert Randolph, Jarrod Taylor<\/em><\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<p class=\"wp-block-paragraph\"><\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><img data-recalc-dims=\"1\" loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"593\" src=\"https:\/\/i0.wp.com\/building.nu.com\/wp-content\/uploads\/2023\/05\/image-6.png?resize=1024%2C593&#038;ssl=1\" alt=\"\" class=\"wp-image-20894\" srcset=\"https:\/\/i0.wp.com\/building.nu.com\/wp-content\/uploads\/2023\/05\/image-6.png?resize=1024%2C593&amp;ssl=1 1024w, https:\/\/i0.wp.com\/building.nu.com\/wp-content\/uploads\/2023\/05\/image-6.png?resize=300%2C174&amp;ssl=1 300w, https:\/\/i0.wp.com\/building.nu.com\/wp-content\/uploads\/2023\/05\/image-6.png?resize=768%2C444&amp;ssl=1 768w, https:\/\/i0.wp.com\/building.nu.com\/wp-content\/uploads\/2023\/05\/image-6.png?resize=1536%2C889&amp;ssl=1 1536w, https:\/\/i0.wp.com\/building.nu.com\/wp-content\/uploads\/2023\/05\/image-6.png?resize=1200%2C695&amp;ssl=1 1200w, https:\/\/i0.wp.com\/building.nu.com\/wp-content\/uploads\/2023\/05\/image-6.png?w=1600&amp;ssl=1 1600w\" sizes=\"auto, (max-width: 1000px) 100vw, 1000px\" \/><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\">Como escritor de una <a href=\"https:\/\/docs.datomic.com\/on-prem\/query\/query.html\">query de Datomic<\/a>, tu tienes control sobre el orden de las cl\u00e1usulas de query, lo que puede ser muy poderoso si tienes suficiente informaci\u00f3n para ordenar las cl\u00e1usulas de query de mayor a menor selectiva. Algunas medidas de selectividad de cl\u00e1usulas son la cantidad de filas que entran y salen de cada cl\u00e1usula, as\u00ed como la delimitaci\u00f3n de las variables l\u00f3gicas utilizadas por cada cl\u00e1usula. La informaci\u00f3n devuelta por query-stats puede informarte sobre esas medidas y usarse para tomar una decisi\u00f3n informada sobre el orden de las cl\u00e1usulas.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Usaremos el <a href=\"https:\/\/github.com\/Datomic\/mbrainz-sample\">repositorio de c\u00f3digo de base de datos de muestra de MusicBrainz<\/a> para todos los ejemplos de este art\u00edculo. Para obtener un tutorial r\u00e1pido sobre c\u00f3mo hacer que Datomic se ejecute localmente con la <a href=\"https:\/\/github.com\/Datomic\/mbrainz-sample#getting-the-data\">base de datos de muestra de MusicBrainz<\/a>, consulta el archivo <a href=\"https:\/\/github.com\/Datomic\/mbrainz-sample\/blob\/master\/README.md#getting-started\">L\u00c9AME<\/a>.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Usaremos query-stats para lograr el estado \u00abdespu\u00e9s\u00bb que se muestra en la imagen de arriba manteniendo el resultado intermedio lo m\u00e1s peque\u00f1o posible entre cl\u00e1usulas.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">C\u00f3mo solicitar query-stats<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">A partir de la <a href=\"https:\/\/forum.datomic.com\/t\/datomic-1-0-6610-now-available\/2176\">v1.0.6610 de Datomic On-Prem<\/a>,que pronto se lanzar\u00e1 en Datomic Cloud,los usuarios ahora pueden solicitar query-stats cuando ejecutan queries.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Para ejecutar una query mientras se acumulan query-stats, necesitaremos aprovechar <a href=\"https:\/\/docs.datomic.com\/on-prem\/clojure\/index.html#datomic.api\/query\">datomic.api\/query<\/a> y proporcionar \u00ab:query-stats true\u00bb en el argumento del mapa de query.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Algunas partes de las estad\u00edsticas de consulta se explicar\u00e1n con m\u00e1s detalle en las siguientes secciones. Para obtener informaci\u00f3n adicional, consulta la <a href=\"https:\/\/docs.datomic.com\/on-prem\/api\/query-stats.html\">documentaci\u00f3n del usuario de query-stats<\/a>.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Escenario: utiliza query-stats mientras optimiza el orden de las cl\u00e1usulas<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">En este escenario, utilizaremos query-stats para guiar nuestro proceso de pensamiento mientras buscamos el orden \u00f3ptimo de las cl\u00e1usulas.Realizaremos una consulta que encontrar\u00e1 todos los \u00e1lbumes lanzados antes de 1970 en los que al menos uno de los artistas fuera <a href=\"https:\/\/en.wikipedia.org\/wiki\/John_Lennon\">John Lennon<\/a>, luego devolveremos el nombre del \u00e1lbum y el a\u00f1o de lanzamiento.<\/p>\n\n\n\n<div class=\"wp-block-kevinbatdorf-code-block-pro\" data-code-block-pro-font-family=\"Code-Pro-JetBrains-Mono\" style=\"font-size:.875rem;font-family:Code-Pro-JetBrains-Mono,ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,monospace;line-height:1.25rem;--cbp-tab-width:2;tab-size:var(--cbp-tab-width, 2)\"><span style=\"display:block;padding:16px 0 0 16px;margin-bottom:-1px;width:100%;text-align:left;background-color:#2e3440ff\"><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"54\" height=\"14\" viewBox=\"0 0 54 14\"><g fill=\"none\" fill-rule=\"evenodd\" transform=\"translate(1 1)\"><circle cx=\"6\" cy=\"6\" r=\"6\" fill=\"#FF5F56\" stroke=\"#E0443E\" stroke-width=\".5\"><\/circle><circle cx=\"26\" cy=\"6\" r=\"6\" fill=\"#FFBD2E\" stroke=\"#DEA123\" stroke-width=\".5\"><\/circle><circle cx=\"46\" cy=\"6\" r=\"6\" fill=\"#27C93F\" stroke=\"#1AAB29\" stroke-width=\".5\"><\/circle><\/g><\/svg><\/span><span role=\"button\" tabindex=\"0\" data-code=\"{:query       '{:find  [?album-name ?year]\n                :in    [$ ?artist-name]\n                :where [[?artist :artist\/name ?artist-name]\n                        [?release :release\/artists ?artist]\n                        [?release :release\/name ?album-name]\n                        [?release :release\/year ?year]\n                        [(&lt; ?year 1970)]]}\n :args        [db &quot;John Lennon&quot;]\n :query-stats true}\" style=\"color:#d8dee9ff;display:none\" aria-label=\"Copy\" class=\"code-block-pro-copy-button\"><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" style=\"width:24px;height:24px\" fill=\"none\" viewBox=\"0 0 24 24\" stroke=\"currentColor\" stroke-width=\"2\"><path class=\"with-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2m-6 9l2 2 4-4\"><\/path><path class=\"without-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2\"><\/path><\/svg><\/span><pre class=\"shiki nord\" style=\"background-color: #2e3440ff\" tabindex=\"0\"><code><span class=\"line\"><span style=\"color: #ECEFF4\">{<\/span><span style=\"color: #D8DEE9FF\">:query       &#39;<\/span><span style=\"color: #ECEFF4\">{<\/span><span style=\"color: #D8DEE9FF\">:find  <\/span><span style=\"color: #ECEFF4\">[<\/span><span style=\"color: #D8DEE9FF\">?album-name ?year<\/span><span style=\"color: #ECEFF4\">]<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">                :in    <\/span><span style=\"color: #ECEFF4\">[<\/span><span style=\"color: #D8DEE9FF\">$ ?artist-name<\/span><span style=\"color: #ECEFF4\">]<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">                :where <\/span><span style=\"color: #ECEFF4\">[[<\/span><span style=\"color: #D8DEE9FF\">?artist :artist\/name ?artist-name<\/span><span style=\"color: #ECEFF4\">]<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">                        <\/span><span style=\"color: #ECEFF4\">[<\/span><span style=\"color: #D8DEE9FF\">?release :release\/artists ?artist<\/span><span style=\"color: #ECEFF4\">]<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">                        <\/span><span style=\"color: #ECEFF4\">[<\/span><span style=\"color: #D8DEE9FF\">?release :release\/name ?album-name<\/span><span style=\"color: #ECEFF4\">]<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">                        <\/span><span style=\"color: #ECEFF4\">[<\/span><span style=\"color: #D8DEE9FF\">?release :release\/year ?year<\/span><span style=\"color: #ECEFF4\">]<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">                        <\/span><span style=\"color: #ECEFF4\">[(<\/span><span style=\"color: #88C0D0\">&lt;<\/span><span style=\"color: #D8DEE9FF\"> ?year <\/span><span style=\"color: #B48EAD\">1970<\/span><span style=\"color: #ECEFF4\">)]]}<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\"> :args        <\/span><span style=\"color: #ECEFF4\">[<\/span><span style=\"color: #D8DEE9FF\">db <\/span><span style=\"color: #ECEFF4\">&quot;<\/span><span style=\"color: #A3BE8C\">John Lennon<\/span><span style=\"color: #ECEFF4\">&quot;<\/span><span style=\"color: #ECEFF4\">]<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\"> :query-stats <\/span><span style=\"color: #81A1C1\">true<\/span><span style=\"color: #ECEFF4\">}<\/span><\/span><\/code><\/pre><\/div>\n\n\n\n<p class=\"wp-block-paragraph\">Los resultados de la solicitud de query-stats para este query <a href=\"https:\/\/gist.github.com\/keithharper\/7931e836d51b453eb3ab43141685a3d2\">se pueden encontrar aqu\u00ed<\/a>.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">:phases<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Cada elemento de \u00ab:phases\u00bb representa una colecci\u00f3n de cl\u00e1usulas que se procesar\u00e1n como una \u00fanica unidad de trabajo. Para la mayor\u00eda de las consultas, es posible que solo haya un elemento debajo, pero ciertas consultas tendr\u00e1n varios elementos en \u00ab:phases\u00bb (por ejemplo, aquellas que usan <a href=\"https:\/\/docs.datomic.com\/on-prem\/query\/query.html#reglas\">reglas de query<\/a>)<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">:sched<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">\u00ab:sched\u00bb es la abreviatura de \u00abschedule\u00bb y representa el plan aproximado que utilizar\u00e1 el motor de consultas al procesar esta consulta:<\/p>\n\n\n\n<div class=\"wp-block-kevinbatdorf-code-block-pro\" data-code-block-pro-font-family=\"Code-Pro-JetBrains-Mono\" style=\"font-size:.875rem;font-family:Code-Pro-JetBrains-Mono,ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,monospace;line-height:1.25rem;--cbp-tab-width:2;tab-size:var(--cbp-tab-width, 2)\"><span style=\"display:block;padding:16px 0 0 16px;margin-bottom:-1px;width:100%;text-align:left;background-color:#2e3440ff\"><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"54\" height=\"14\" viewBox=\"0 0 54 14\"><g fill=\"none\" fill-rule=\"evenodd\" transform=\"translate(1 1)\"><circle cx=\"6\" cy=\"6\" r=\"6\" fill=\"#FF5F56\" stroke=\"#E0443E\" stroke-width=\".5\"><\/circle><circle cx=\"26\" cy=\"6\" r=\"6\" fill=\"#FFBD2E\" stroke=\"#DEA123\" stroke-width=\".5\"><\/circle><circle cx=\"46\" cy=\"6\" r=\"6\" fill=\"#27C93F\" stroke=\"#1AAB29\" stroke-width=\".5\"><\/circle><\/g><\/svg><\/span><span role=\"button\" tabindex=\"0\" data-code=\"(([(ground $__in__2) ?artist-name]\n  [?artist :artist\/name ?artist-name]\n  [?release :release\/artists ?artist]\n  [?release :release\/name ?album-name]\n  [?release :release\/year ?year]\n  [(&lt; ?year 1970)]))\" style=\"color:#d8dee9ff;display:none\" aria-label=\"Copy\" class=\"code-block-pro-copy-button\"><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" style=\"width:24px;height:24px\" fill=\"none\" viewBox=\"0 0 24 24\" stroke=\"currentColor\" stroke-width=\"2\"><path class=\"with-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2m-6 9l2 2 4-4\"><\/path><path class=\"without-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2\"><\/path><\/svg><\/span><pre class=\"shiki nord\" style=\"background-color: #2e3440ff\" tabindex=\"0\"><code><span class=\"line\"><span style=\"color: #ECEFF4\">(([(<\/span><span style=\"color: #88C0D0\">ground<\/span><span style=\"color: #D8DEE9FF\"> $__in__2<\/span><span style=\"color: #ECEFF4\">)<\/span><span style=\"color: #D8DEE9FF\"> ?artist-name<\/span><span style=\"color: #ECEFF4\">]<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">  <\/span><span style=\"color: #ECEFF4\">[<\/span><span style=\"color: #D8DEE9FF\">?artist :artist\/name ?artist-name<\/span><span style=\"color: #ECEFF4\">]<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">  <\/span><span style=\"color: #ECEFF4\">[<\/span><span style=\"color: #D8DEE9FF\">?release :release\/artists ?artist<\/span><span style=\"color: #ECEFF4\">]<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">  <\/span><span style=\"color: #ECEFF4\">[<\/span><span style=\"color: #D8DEE9FF\">?release :release\/name ?album-name<\/span><span style=\"color: #ECEFF4\">]<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">  <\/span><span style=\"color: #ECEFF4\">[<\/span><span style=\"color: #D8DEE9FF\">?release :release\/year ?year<\/span><span style=\"color: #ECEFF4\">]<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">  <\/span><span style=\"color: #ECEFF4\">[(<\/span><span style=\"color: #88C0D0\">&lt;<\/span><span style=\"color: #D8DEE9FF\"> ?year <\/span><span style=\"color: #B48EAD\">1970<\/span><span style=\"color: #ECEFF4\">)]))<\/span><\/span><\/code><\/pre><\/div>\n\n\n\n<p class=\"wp-block-paragraph\">Puedes notar que hay una cl\u00e1usula de query adicional en el cronograma que no estaba en la colecci\u00f3n de cl\u00e1usulas que proporcionamos a \u00ab:where\u00bb. \u201c[(<strong><em>ground<\/em><\/strong> <strong>$__in__2<\/strong>) <strong>?artist-name<\/strong>]\u201d es la forma en que el motor de query vincula el valor (John Lennon) y la variable l\u00f3gica (\u201c?artist-name\u201d) pasada a \u201c:in\u201d.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">:clauses<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">\u201c:clauses\u201d contiene las cl\u00e1usulas de query que se ejecutaron para esta fase:<\/p>\n\n\n\n<figure class=\"wp-block-table\"><table><tbody><tr><td>clause<\/td><td>rows-in<\/td><td>rows-out<\/td><td>binds-in<\/td><td>binds-out<\/td><td>expansion<\/td><td>preds<\/td><\/tr><tr><td>[(<strong><em>ground<\/em><\/strong> <strong>$__in__2<\/strong>) <strong>?artist-name<\/strong>]<\/td><td><strong>0<\/strong><\/td><td><strong>1<\/strong><\/td><td>()<\/td><td>[<strong>?artist-name<\/strong>]<\/td><td><strong>1<\/strong><\/td><td><\/td><\/tr><tr><td>[<strong>?artist<\/strong> :artist\/name <strong>?artist-name<\/strong>]<\/td><td><strong>1<\/strong><\/td><td><strong>1<\/strong><\/td><td>[<strong>?artist-name<\/strong>]<\/td><td>[<strong>?artist<\/strong>]<\/td><td><\/td><td><\/td><\/tr><tr><td>[<strong>?release <\/strong>:release\/artists <strong>?artist<\/strong>]<\/td><td><strong>1<\/strong><\/td><td><strong>21<\/strong><\/td><td>[<strong>?artist<\/strong>]<\/td><td>[<strong>?release<\/strong>]<\/td><td><strong>20<\/strong><\/td><td><\/td><\/tr><tr><td>[<strong>?release <\/strong>:release\/name <strong>?album-name<\/strong>]<\/td><td><strong>21<\/strong><\/td><td><strong>21<\/strong><\/td><td>[<strong>?release<\/strong>]<\/td><td>[<strong>?album-name<\/strong>&nbsp;<strong>?release<\/strong>]<\/td><td><\/td><td><\/td><\/tr><tr><td>[<strong>?release <\/strong>:release\/year <strong>?year<\/strong>]<\/td><td><strong>21<\/strong><\/td><td><strong>3<\/strong><\/td><td>[<strong>?album-name<\/strong>&nbsp;<strong>?release<\/strong>]<\/td><td>[<strong>?year<\/strong><strong>&nbsp;?album-name<\/strong>]<\/td><td><\/td><td>([(&lt; <strong>?year<\/strong> <strong>1970<\/strong>)])<\/td><\/tr><\/tbody><\/table><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\">La tabla anterior podr\u00eda facilitar un poco la interpretaci\u00f3n de las query-stats de las cl\u00e1usulas. Observe c\u00f3mo \u201c:rows-in\u201d y \u201c:binds-in\u201d de una cl\u00e1usula se corresponden directamente con \u201c:rows-out\u201d y \u201c:binds-out\u201d de la cl\u00e1usula anterior.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Cl\u00e1usula 1<\/h2>\n\n\n\n<div class=\"wp-block-kevinbatdorf-code-block-pro\" data-code-block-pro-font-family=\"Code-Pro-JetBrains-Mono\" style=\"font-size:.875rem;font-family:Code-Pro-JetBrains-Mono,ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,monospace;line-height:1.25rem;--cbp-tab-width:2;tab-size:var(--cbp-tab-width, 2)\"><span style=\"display:block;padding:16px 0 0 16px;margin-bottom:-1px;width:100%;text-align:left;background-color:#2e3440ff\"><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"54\" height=\"14\" viewBox=\"0 0 54 14\"><g fill=\"none\" fill-rule=\"evenodd\" transform=\"translate(1 1)\"><circle cx=\"6\" cy=\"6\" r=\"6\" fill=\"#FF5F56\" stroke=\"#E0443E\" stroke-width=\".5\"><\/circle><circle cx=\"26\" cy=\"6\" r=\"6\" fill=\"#FFBD2E\" stroke=\"#DEA123\" stroke-width=\".5\"><\/circle><circle cx=\"46\" cy=\"6\" r=\"6\" fill=\"#27C93F\" stroke=\"#1AAB29\" stroke-width=\".5\"><\/circle><\/g><\/svg><\/span><span role=\"button\" tabindex=\"0\" data-code=\"{:clause    [(ground $__in__2) ?artist-name],\n :rows-in   0,\n :rows-out  1,\n :binds-in  (),\n :binds-out [?artist-name],\n :expansion 1}\" style=\"color:#d8dee9ff;display:none\" aria-label=\"Copy\" class=\"code-block-pro-copy-button\"><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" style=\"width:24px;height:24px\" fill=\"none\" viewBox=\"0 0 24 24\" stroke=\"currentColor\" stroke-width=\"2\"><path class=\"with-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2m-6 9l2 2 4-4\"><\/path><path class=\"without-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2\"><\/path><\/svg><\/span><pre class=\"shiki nord\" style=\"background-color: #2e3440ff\" tabindex=\"0\"><code><span class=\"line\"><span style=\"color: #ECEFF4\">{<\/span><span style=\"color: #D8DEE9FF\">:clause    <\/span><span style=\"color: #ECEFF4\">[(<\/span><span style=\"color: #88C0D0\">ground<\/span><span style=\"color: #D8DEE9FF\"> $__in__2<\/span><span style=\"color: #ECEFF4\">)<\/span><span style=\"color: #D8DEE9FF\"> ?artist-name<\/span><span style=\"color: #ECEFF4\">]<\/span><span style=\"color: #D8DEE9FF\">,<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\"> :rows-in   <\/span><span style=\"color: #B48EAD\">0<\/span><span style=\"color: #D8DEE9FF\">,<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\"> :rows-out  <\/span><span style=\"color: #B48EAD\">1<\/span><span style=\"color: #D8DEE9FF\">,<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\"> :binds-in  <\/span><span style=\"color: #ECEFF4\">()<\/span><span style=\"color: #D8DEE9FF\">,<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\"> :binds-out <\/span><span style=\"color: #ECEFF4\">[<\/span><span style=\"color: #D8DEE9FF\">?artist-name<\/span><span style=\"color: #ECEFF4\">]<\/span><span style=\"color: #D8DEE9FF\">,<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\"> :expansion <\/span><span style=\"color: #B48EAD\">1<\/span><span style=\"color: #ECEFF4\">}<\/span><\/span><\/code><\/pre><\/div>\n\n\n\n<p class=\"wp-block-paragraph\"><\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Nuevamente, esta cl\u00e1usula simplemente representa la vinculaci\u00f3n del valor y la variable l\u00f3gica que se pasaron a \u00ab:in\u00bb.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\u201c:rows-in 0\u201d indica que no hab\u00eda filas en el conjunto de resultados antes de procesar esta cl\u00e1usula.&nbsp;<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\u201c:rows-out 1\u201d indica que el conjunto de resultados ahora tiene 1 cl\u00e1usula, que contiene el enlace indicado por \u201c:binds-out [?artist-name]\u201d.<br>\u201c:expansion 1\u201d simplemente significa que \u201c:rows-out\u201d se expandi\u00f3 en tama\u00f1o en 1 fila, despu\u00e9s de procesar esta cl\u00e1usula.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Cl\u00e1usula 2<\/h2>\n\n\n\n<div class=\"wp-block-kevinbatdorf-code-block-pro\" data-code-block-pro-font-family=\"Code-Pro-JetBrains-Mono\" style=\"font-size:.875rem;font-family:Code-Pro-JetBrains-Mono,ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,monospace;line-height:1.25rem;--cbp-tab-width:2;tab-size:var(--cbp-tab-width, 2)\"><span style=\"display:block;padding:16px 0 0 16px;margin-bottom:-1px;width:100%;text-align:left;background-color:#2e3440ff\"><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"54\" height=\"14\" viewBox=\"0 0 54 14\"><g fill=\"none\" fill-rule=\"evenodd\" transform=\"translate(1 1)\"><circle cx=\"6\" cy=\"6\" r=\"6\" fill=\"#FF5F56\" stroke=\"#E0443E\" stroke-width=\".5\"><\/circle><circle cx=\"26\" cy=\"6\" r=\"6\" fill=\"#FFBD2E\" stroke=\"#DEA123\" stroke-width=\".5\"><\/circle><circle cx=\"46\" cy=\"6\" r=\"6\" fill=\"#27C93F\" stroke=\"#1AAB29\" stroke-width=\".5\"><\/circle><\/g><\/svg><\/span><span role=\"button\" tabindex=\"0\" data-code=\"{:clause    [?artist :artist\/name ?artist-name],\n :rows-in   1,\n :rows-out  1,\n :binds-in  [?artist-name],\n :binds-out [?artist]}\" style=\"color:#d8dee9ff;display:none\" aria-label=\"Copy\" class=\"code-block-pro-copy-button\"><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" style=\"width:24px;height:24px\" fill=\"none\" viewBox=\"0 0 24 24\" stroke=\"currentColor\" stroke-width=\"2\"><path class=\"with-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2m-6 9l2 2 4-4\"><\/path><path class=\"without-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2\"><\/path><\/svg><\/span><pre class=\"shiki nord\" style=\"background-color: #2e3440ff\" tabindex=\"0\"><code><span class=\"line\"><span style=\"color: #ECEFF4\">{<\/span><span style=\"color: #D8DEE9FF\">:clause    <\/span><span style=\"color: #ECEFF4\">[<\/span><span style=\"color: #D8DEE9FF\">?artist :artist\/name ?artist-name<\/span><span style=\"color: #ECEFF4\">]<\/span><span style=\"color: #D8DEE9FF\">,<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\"> :rows-in   <\/span><span style=\"color: #B48EAD\">1<\/span><span style=\"color: #D8DEE9FF\">,<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\"> :rows-out  <\/span><span style=\"color: #B48EAD\">1<\/span><span style=\"color: #D8DEE9FF\">,<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\"> :binds-in  <\/span><span style=\"color: #ECEFF4\">[<\/span><span style=\"color: #D8DEE9FF\">?artist-name<\/span><span style=\"color: #ECEFF4\">]<\/span><span style=\"color: #D8DEE9FF\">,<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\"> :binds-out <\/span><span style=\"color: #ECEFF4\">[<\/span><span style=\"color: #D8DEE9FF\">?artist<\/span><span style=\"color: #ECEFF4\">]}<\/span><\/span><\/code><\/pre><\/div>\n\n\n\n<p class=\"wp-block-paragraph\">Observa c\u00f3mo \u201c:binds-out\u201d ya no tiene \u201c?artist-name\u201d, pero s\u00ed tiene un nuevo enlace de \u201c?artist\u201d. Esto se debe a que el motor de consulta puede ver las cl\u00e1usulas que se procesar\u00e1n despu\u00e9s de esta, y ninguna de ellas usa \u00ab?artist-name\u00bb, por lo que se puede eliminar de forma segura del conjunto de resultados.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Cl\u00e1usula 3<\/h2>\n\n\n\n<div class=\"wp-block-kevinbatdorf-code-block-pro\" data-code-block-pro-font-family=\"Code-Pro-JetBrains-Mono\" style=\"font-size:.875rem;font-family:Code-Pro-JetBrains-Mono,ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,monospace;line-height:1.25rem;--cbp-tab-width:2;tab-size:var(--cbp-tab-width, 2)\"><span style=\"display:block;padding:16px 0 0 16px;margin-bottom:-1px;width:100%;text-align:left;background-color:#2e3440ff\"><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"54\" height=\"14\" viewBox=\"0 0 54 14\"><g fill=\"none\" fill-rule=\"evenodd\" transform=\"translate(1 1)\"><circle cx=\"6\" cy=\"6\" r=\"6\" fill=\"#FF5F56\" stroke=\"#E0443E\" stroke-width=\".5\"><\/circle><circle cx=\"26\" cy=\"6\" r=\"6\" fill=\"#FFBD2E\" stroke=\"#DEA123\" stroke-width=\".5\"><\/circle><circle cx=\"46\" cy=\"6\" r=\"6\" fill=\"#27C93F\" stroke=\"#1AAB29\" stroke-width=\".5\"><\/circle><\/g><\/svg><\/span><span role=\"button\" tabindex=\"0\" data-code=\"{:clause    [?release :release\/artists ?artist],\n :rows-in   1,\n :rows-out  21,\n :binds-in  [?artist],\n :binds-out [?release],\n :expansion 20}\" style=\"color:#d8dee9ff;display:none\" aria-label=\"Copy\" class=\"code-block-pro-copy-button\"><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" style=\"width:24px;height:24px\" fill=\"none\" viewBox=\"0 0 24 24\" stroke=\"currentColor\" stroke-width=\"2\"><path class=\"with-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2m-6 9l2 2 4-4\"><\/path><path class=\"without-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2\"><\/path><\/svg><\/span><pre class=\"shiki nord\" style=\"background-color: #2e3440ff\" tabindex=\"0\"><code><span class=\"line\"><span style=\"color: #ECEFF4\">{<\/span><span style=\"color: #D8DEE9FF\">:clause    <\/span><span style=\"color: #ECEFF4\">[<\/span><span style=\"color: #D8DEE9FF\">?release :release\/artists ?artist<\/span><span style=\"color: #ECEFF4\">]<\/span><span style=\"color: #D8DEE9FF\">,<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\"> :rows-in   <\/span><span style=\"color: #B48EAD\">1<\/span><span style=\"color: #D8DEE9FF\">,<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\"> :rows-out  <\/span><span style=\"color: #B48EAD\">21<\/span><span style=\"color: #D8DEE9FF\">,<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\"> :binds-in  <\/span><span style=\"color: #ECEFF4\">[<\/span><span style=\"color: #D8DEE9FF\">?artist<\/span><span style=\"color: #ECEFF4\">]<\/span><span style=\"color: #D8DEE9FF\">,<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\"> :binds-out <\/span><span style=\"color: #ECEFF4\">[<\/span><span style=\"color: #D8DEE9FF\">?release<\/span><span style=\"color: #ECEFF4\">]<\/span><span style=\"color: #D8DEE9FF\">,<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\"> :expansion <\/span><span style=\"color: #B48EAD\">20<\/span><span style=\"color: #ECEFF4\">}<\/span><\/span><\/code><\/pre><\/div>\n\n\n\n<p class=\"wp-block-paragraph\"><\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Ahora llegamos a la primera cl\u00e1usula que introduce una expansi\u00f3n del conjunto de resultados real. Las query-stats para esta cl\u00e1usula indican que se encontraron 21 lanzamientos, en los que John Lennon fue uno de los artistas involucrados.<\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><img data-recalc-dims=\"1\" loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"266\" src=\"https:\/\/i0.wp.com\/building.nu.com\/wp-content\/uploads\/2023\/05\/Screenshot-2023-05-22-at-18.35.36.png?resize=1024%2C266&#038;ssl=1\" alt=\"\" class=\"wp-image-20900\" srcset=\"https:\/\/i0.wp.com\/building.nu.com\/wp-content\/uploads\/2023\/05\/Screenshot-2023-05-22-at-18.35.36.png?resize=1024%2C266&amp;ssl=1 1024w, https:\/\/i0.wp.com\/building.nu.com\/wp-content\/uploads\/2023\/05\/Screenshot-2023-05-22-at-18.35.36.png?resize=300%2C78&amp;ssl=1 300w, https:\/\/i0.wp.com\/building.nu.com\/wp-content\/uploads\/2023\/05\/Screenshot-2023-05-22-at-18.35.36.png?resize=768%2C200&amp;ssl=1 768w, https:\/\/i0.wp.com\/building.nu.com\/wp-content\/uploads\/2023\/05\/Screenshot-2023-05-22-at-18.35.36.png?resize=1200%2C312&amp;ssl=1 1200w, https:\/\/i0.wp.com\/building.nu.com\/wp-content\/uploads\/2023\/05\/Screenshot-2023-05-22-at-18.35.36.png?w=1376&amp;ssl=1 1376w\" sizes=\"auto, (max-width: 1000px) 100vw, 1000px\" \/><\/figure>\n\n\n\n<p class=\"is-style-default wp-block-paragraph\"><\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Cl\u00e1usula 4<\/h2>\n\n\n\n<div class=\"wp-block-kevinbatdorf-code-block-pro\" data-code-block-pro-font-family=\"Code-Pro-JetBrains-Mono\" style=\"font-size:.875rem;font-family:Code-Pro-JetBrains-Mono,ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,monospace;line-height:1.25rem;--cbp-tab-width:2;tab-size:var(--cbp-tab-width, 2)\"><span style=\"display:block;padding:16px 0 0 16px;margin-bottom:-1px;width:100%;text-align:left;background-color:#2e3440ff\"><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"54\" height=\"14\" viewBox=\"0 0 54 14\"><g fill=\"none\" fill-rule=\"evenodd\" transform=\"translate(1 1)\"><circle cx=\"6\" cy=\"6\" r=\"6\" fill=\"#FF5F56\" stroke=\"#E0443E\" stroke-width=\".5\"><\/circle><circle cx=\"26\" cy=\"6\" r=\"6\" fill=\"#FFBD2E\" stroke=\"#DEA123\" stroke-width=\".5\"><\/circle><circle cx=\"46\" cy=\"6\" r=\"6\" fill=\"#27C93F\" stroke=\"#1AAB29\" stroke-width=\".5\"><\/circle><\/g><\/svg><\/span><span role=\"button\" tabindex=\"0\" data-code=\"{:clause    [?release :release\/name ?album-name],\n :rows-in   21,\n :rows-out  21,\n :binds-in  [?release],\n :binds-out [?album-name ?release]}\" style=\"color:#d8dee9ff;display:none\" aria-label=\"Copy\" class=\"code-block-pro-copy-button\"><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" style=\"width:24px;height:24px\" fill=\"none\" viewBox=\"0 0 24 24\" stroke=\"currentColor\" stroke-width=\"2\"><path class=\"with-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2m-6 9l2 2 4-4\"><\/path><path class=\"without-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2\"><\/path><\/svg><\/span><pre class=\"shiki nord\" style=\"background-color: #2e3440ff\" tabindex=\"0\"><code><span class=\"line\"><span style=\"color: #ECEFF4\">{<\/span><span style=\"color: #D8DEE9FF\">:clause    <\/span><span style=\"color: #ECEFF4\">[<\/span><span style=\"color: #D8DEE9FF\">?release :release\/name ?album-name<\/span><span style=\"color: #ECEFF4\">]<\/span><span style=\"color: #D8DEE9FF\">,<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\"> :rows-in   <\/span><span style=\"color: #B48EAD\">21<\/span><span style=\"color: #D8DEE9FF\">,<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\"> :rows-out  <\/span><span style=\"color: #B48EAD\">21<\/span><span style=\"color: #D8DEE9FF\">,<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\"> :binds-in  <\/span><span style=\"color: #ECEFF4\">[<\/span><span style=\"color: #D8DEE9FF\">?release<\/span><span style=\"color: #ECEFF4\">]<\/span><span style=\"color: #D8DEE9FF\">,<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\"> :binds-out <\/span><span style=\"color: #ECEFF4\">[<\/span><span style=\"color: #D8DEE9FF\">?album-name ?release<\/span><span style=\"color: #ECEFF4\">]}<\/span><\/span><\/code><\/pre><\/div>\n\n\n\n<p class=\"wp-block-paragraph\">Esta cl\u00e1usula introduce nuevos valores en el conjunto de resultados, como lo indica la diferencia entre enlaces de entrada y salida. A pesar de eso, el n\u00famero de filas en el conjunto de resultados no aumenta. \u00bfQu\u00e9 crees que pasar\u00eda si hici\u00e9ramos de esta la \u00faltima cl\u00e1usula de nuestras cl\u00e1usulas \u201c:where\u201d?<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Cl\u00e1usula 5<\/h2>\n\n\n\n<div class=\"wp-block-kevinbatdorf-code-block-pro\" data-code-block-pro-font-family=\"Code-Pro-JetBrains-Mono\" style=\"font-size:.875rem;font-family:Code-Pro-JetBrains-Mono,ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,monospace;line-height:1.25rem;--cbp-tab-width:2;tab-size:var(--cbp-tab-width, 2)\"><span style=\"display:block;padding:16px 0 0 16px;margin-bottom:-1px;width:100%;text-align:left;background-color:#2e3440ff\"><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"54\" height=\"14\" viewBox=\"0 0 54 14\"><g fill=\"none\" fill-rule=\"evenodd\" transform=\"translate(1 1)\"><circle cx=\"6\" cy=\"6\" r=\"6\" fill=\"#FF5F56\" stroke=\"#E0443E\" stroke-width=\".5\"><\/circle><circle cx=\"26\" cy=\"6\" r=\"6\" fill=\"#FFBD2E\" stroke=\"#DEA123\" stroke-width=\".5\"><\/circle><circle cx=\"46\" cy=\"6\" r=\"6\" fill=\"#27C93F\" stroke=\"#1AAB29\" stroke-width=\".5\"><\/circle><\/g><\/svg><\/span><span role=\"button\" tabindex=\"0\" data-code=\"{:clause    [?release :release\/year ?year],\n :rows-in   21,\n :rows-out  3,\n :binds-in  [?album-name ?release],\n :binds-out [?album-name ?year],\n :preds     ([(&lt; ?year 1970)])}\" style=\"color:#d8dee9ff;display:none\" aria-label=\"Copy\" class=\"code-block-pro-copy-button\"><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" style=\"width:24px;height:24px\" fill=\"none\" viewBox=\"0 0 24 24\" stroke=\"currentColor\" stroke-width=\"2\"><path class=\"with-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2m-6 9l2 2 4-4\"><\/path><path class=\"without-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2\"><\/path><\/svg><\/span><pre class=\"shiki nord\" style=\"background-color: #2e3440ff\" tabindex=\"0\"><code><span class=\"line\"><span style=\"color: #ECEFF4\">{<\/span><span style=\"color: #D8DEE9FF\">:clause    <\/span><span style=\"color: #ECEFF4\">[<\/span><span style=\"color: #D8DEE9FF\">?release :release\/year ?year<\/span><span style=\"color: #ECEFF4\">]<\/span><span style=\"color: #D8DEE9FF\">,<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\"> :rows-in   <\/span><span style=\"color: #B48EAD\">21<\/span><span style=\"color: #D8DEE9FF\">,<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\"> :rows-out  <\/span><span style=\"color: #B48EAD\">3<\/span><span style=\"color: #D8DEE9FF\">,<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\"> :binds-in  <\/span><span style=\"color: #ECEFF4\">[<\/span><span style=\"color: #D8DEE9FF\">?album-name ?release<\/span><span style=\"color: #ECEFF4\">]<\/span><span style=\"color: #D8DEE9FF\">,<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\"> :binds-out <\/span><span style=\"color: #ECEFF4\">[<\/span><span style=\"color: #D8DEE9FF\">?album-name ?year<\/span><span style=\"color: #ECEFF4\">]<\/span><span style=\"color: #D8DEE9FF\">,<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\"> :preds     <\/span><span style=\"color: #ECEFF4\">([(<\/span><span style=\"color: #88C0D0\">&lt;<\/span><span style=\"color: #D8DEE9FF\"> ?year <\/span><span style=\"color: #B48EAD\">1970<\/span><span style=\"color: #ECEFF4\">)])}<\/span><\/span><\/code><\/pre><\/div>\n\n\n\n<p class=\"wp-block-paragraph\"><\/p>\n\n\n\n<p class=\"wp-block-paragraph\">La cl\u00e1usula final realmente reduce el conjunto de resultados y muestra una informaci\u00f3n que antes no era evidente: \u201c:preds\u201d. La presencia de una clave \u00ab:preds\u00bb aqu\u00ed indica que las cl\u00e1usulas correspondientes se utilizaron como predicados de filtro al encontrar respuestas a \u201c[<strong>?release<\/strong> :release\/year <strong>?year<\/strong>]\u201d.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Ahora echemos un vistazo a lo que suceder\u00eda si movi\u00e9ramos la cl\u00e1usula 4 al final de nuestras cl\u00e1usulas \u00ab:where\u00bb.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Escenario: Realiza Todas las Uniones Necesarias y Luego Proyecta los Valores<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Vamos a tomar la misma consulta que ejecutamos antes, excepto que esta vez observaremos lo que sucede cuando movemos \u201c[<strong>?release<\/strong> :release\/name <strong>?album-name<\/strong>]\u201d al final de nuestras cl\u00e1usulas \u201c:where\u201d.<\/p>\n\n\n\n<div class=\"wp-block-kevinbatdorf-code-block-pro\" data-code-block-pro-font-family=\"Code-Pro-JetBrains-Mono\" style=\"font-size:.875rem;font-family:Code-Pro-JetBrains-Mono,ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,monospace;line-height:1.25rem;--cbp-tab-width:2;tab-size:var(--cbp-tab-width, 2)\"><span style=\"display:block;padding:16px 0 0 16px;margin-bottom:-1px;width:100%;text-align:left;background-color:#2e3440ff\"><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"54\" height=\"14\" viewBox=\"0 0 54 14\"><g fill=\"none\" fill-rule=\"evenodd\" transform=\"translate(1 1)\"><circle cx=\"6\" cy=\"6\" r=\"6\" fill=\"#FF5F56\" stroke=\"#E0443E\" stroke-width=\".5\"><\/circle><circle cx=\"26\" cy=\"6\" r=\"6\" fill=\"#FFBD2E\" stroke=\"#DEA123\" stroke-width=\".5\"><\/circle><circle cx=\"46\" cy=\"6\" r=\"6\" fill=\"#27C93F\" stroke=\"#1AAB29\" stroke-width=\".5\"><\/circle><\/g><\/svg><\/span><span role=\"button\" tabindex=\"0\" data-code=\"{:query '{:find  [?album-name ?year]\n          :in    [$ ?artist-name]\n          :where [[?artist :artist\/name ?artist-name]\n                  [?release :release\/artists ?artist]\n                  [?release :release\/year ?year]\n                  [(&lt; ?year 1970)]\n                  [?release :release\/name ?album-name]]}\n :args  [db &quot;John Lennon&quot;]}\" style=\"color:#d8dee9ff;display:none\" aria-label=\"Copy\" class=\"code-block-pro-copy-button\"><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" style=\"width:24px;height:24px\" fill=\"none\" viewBox=\"0 0 24 24\" stroke=\"currentColor\" stroke-width=\"2\"><path class=\"with-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2m-6 9l2 2 4-4\"><\/path><path class=\"without-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2\"><\/path><\/svg><\/span><pre class=\"shiki nord\" style=\"background-color: #2e3440ff\" tabindex=\"0\"><code><span class=\"line\"><span style=\"color: #ECEFF4\">{<\/span><span style=\"color: #D8DEE9FF\">:query &#39;<\/span><span style=\"color: #ECEFF4\">{<\/span><span style=\"color: #D8DEE9FF\">:find  <\/span><span style=\"color: #ECEFF4\">[<\/span><span style=\"color: #D8DEE9FF\">?album-name ?year<\/span><span style=\"color: #ECEFF4\">]<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">          :in    <\/span><span style=\"color: #ECEFF4\">[<\/span><span style=\"color: #D8DEE9FF\">$ ?artist-name<\/span><span style=\"color: #ECEFF4\">]<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">          :where <\/span><span style=\"color: #ECEFF4\">[[<\/span><span style=\"color: #D8DEE9FF\">?artist :artist\/name ?artist-name<\/span><span style=\"color: #ECEFF4\">]<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">                  <\/span><span style=\"color: #ECEFF4\">[<\/span><span style=\"color: #D8DEE9FF\">?release :release\/artists ?artist<\/span><span style=\"color: #ECEFF4\">]<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">                  <\/span><span style=\"color: #ECEFF4\">[<\/span><span style=\"color: #D8DEE9FF\">?release :release\/year ?year<\/span><span style=\"color: #ECEFF4\">]<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">                  <\/span><span style=\"color: #ECEFF4\">[(<\/span><span style=\"color: #88C0D0\">&lt;<\/span><span style=\"color: #D8DEE9FF\"> ?year <\/span><span style=\"color: #B48EAD\">1970<\/span><span style=\"color: #ECEFF4\">)]<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">                  <\/span><span style=\"color: #ECEFF4\">[<\/span><span style=\"color: #D8DEE9FF\">?release :release\/name ?album-name<\/span><span style=\"color: #ECEFF4\">]]}<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\"> :args  <\/span><span style=\"color: #ECEFF4\">[<\/span><span style=\"color: #D8DEE9FF\">db <\/span><span style=\"color: #ECEFF4\">&quot;<\/span><span style=\"color: #A3BE8C\">John Lennon<\/span><span style=\"color: #ECEFF4\">&quot;<\/span><span style=\"color: #ECEFF4\">]}<\/span><\/span><\/code><\/pre><\/div>\n\n\n\n<p class=\"wp-block-paragraph\"><\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Cuando ejecutamos este query, sucede algo muy interesante, aunque no inmediatamente obvio. Los resultados de la solicitud de query-stats para este query <a href=\"https:\/\/gist.github.com\/keithharper\/2e8d1498d2176c3fcdb0311fc7180002\">se pueden encontrar aqu\u00ed<\/a>.<\/p>\n\n\n\n<figure class=\"wp-block-table\"><table><tbody><tr><td>clause<\/td><td>rows-in<\/td><td>rows-out<\/td><td>binds-in<\/td><td>binds-out<\/td><td>expansion<\/td><td>preds<\/td><\/tr><tr><td>[(<strong><em>ground<\/em><\/strong> <strong>$__in__2<\/strong>) <strong>?artist-name<\/strong>]<\/td><td><strong>0<\/strong><\/td><td><strong>1<\/strong><\/td><td>()<\/td><td>[<strong>?artist-name<\/strong>]<\/td><td><strong>1<\/strong><\/td><td><\/td><\/tr><tr><td>[<strong>?artist<\/strong> :artist\/name <strong>?artist-name<\/strong>]<\/td><td><strong>1<\/strong><\/td><td><strong>1<\/strong><\/td><td>[<strong>?artist-name<\/strong>]<\/td><td>[<strong>?artist<\/strong>]<\/td><td><\/td><td><\/td><\/tr><tr><td>[<strong>?release <\/strong>:release\/artists <strong>?artist<\/strong>]<\/td><td><strong>1<\/strong><\/td><td><strong>21<\/strong><\/td><td>[<strong>?artist<\/strong>]<\/td><td>[<strong>?release<\/strong>]<\/td><td><strong>20<\/strong><\/td><td><\/td><\/tr><tr><td>[<strong>?release <\/strong>:release\/year <strong>?year<\/strong>]<\/td><td><strong>21<\/strong><\/td><td><strong>3<\/strong><\/td><td>[<strong>?release<\/strong>]<\/td><td>[<strong>?year<\/strong><strong>&nbsp;?release<\/strong>]<\/td><td><\/td><td>([(&lt; <strong>?year<\/strong> <strong>1970<\/strong>)])<\/td><\/tr><tr><td>[<strong>?release <\/strong>:release\/name <strong>?album-name<\/strong>]<\/td><td><strong>3<\/strong><\/td><td><strong>3<\/strong><\/td><td>[<strong>?year<\/strong><strong>&nbsp;?release<\/strong>]<\/td><td>[<strong>?album-name<\/strong>&nbsp;<strong>?year<\/strong>]<\/td><td><\/td><td><\/td><\/tr><\/tbody><\/table><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\">Echemos otro vistazo a la cl\u00e1usula 4 de nuestra primera query:<\/p>\n\n\n\n<div class=\"wp-block-kevinbatdorf-code-block-pro\" data-code-block-pro-font-family=\"Code-Pro-JetBrains-Mono\" style=\"font-size:.875rem;font-family:Code-Pro-JetBrains-Mono,ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,monospace;line-height:1.25rem;--cbp-tab-width:2;tab-size:var(--cbp-tab-width, 2)\"><span style=\"display:block;padding:16px 0 0 16px;margin-bottom:-1px;width:100%;text-align:left;background-color:#2e3440ff\"><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"54\" height=\"14\" viewBox=\"0 0 54 14\"><g fill=\"none\" fill-rule=\"evenodd\" transform=\"translate(1 1)\"><circle cx=\"6\" cy=\"6\" r=\"6\" fill=\"#FF5F56\" stroke=\"#E0443E\" stroke-width=\".5\"><\/circle><circle cx=\"26\" cy=\"6\" r=\"6\" fill=\"#FFBD2E\" stroke=\"#DEA123\" stroke-width=\".5\"><\/circle><circle cx=\"46\" cy=\"6\" r=\"6\" fill=\"#27C93F\" stroke=\"#1AAB29\" stroke-width=\".5\"><\/circle><\/g><\/svg><\/span><span role=\"button\" tabindex=\"0\" data-code=\"{:clause    [?release :release\/name ?album-name],\n :rows-in   21,\n :rows-out  21,\n :binds-in  [?release],\n :binds-out [?album-name ?release]}\" style=\"color:#d8dee9ff;display:none\" aria-label=\"Copy\" class=\"code-block-pro-copy-button\"><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" style=\"width:24px;height:24px\" fill=\"none\" viewBox=\"0 0 24 24\" stroke=\"currentColor\" stroke-width=\"2\"><path class=\"with-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2m-6 9l2 2 4-4\"><\/path><path class=\"without-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2\"><\/path><\/svg><\/span><pre class=\"shiki nord\" style=\"background-color: #2e3440ff\" tabindex=\"0\"><code><span class=\"line\"><span style=\"color: #ECEFF4\">{<\/span><span style=\"color: #D8DEE9FF\">:clause    <\/span><span style=\"color: #ECEFF4\">[<\/span><span style=\"color: #D8DEE9FF\">?release :release\/name ?album-name<\/span><span style=\"color: #ECEFF4\">]<\/span><span style=\"color: #D8DEE9FF\">,<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\"> :rows-in   <\/span><span style=\"color: #B48EAD\">21<\/span><span style=\"color: #D8DEE9FF\">,<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\"> :rows-out  <\/span><span style=\"color: #B48EAD\">21<\/span><span style=\"color: #D8DEE9FF\">,<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\"> :binds-in  <\/span><span style=\"color: #ECEFF4\">[<\/span><span style=\"color: #D8DEE9FF\">?release<\/span><span style=\"color: #ECEFF4\">]<\/span><span style=\"color: #D8DEE9FF\">,<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\"> :binds-out <\/span><span style=\"color: #ECEFF4\">[<\/span><span style=\"color: #D8DEE9FF\">?album-name ?release<\/span><span style=\"color: #ECEFF4\">]}<\/span><\/span><\/code><\/pre><\/div>\n\n\n\n<p class=\"wp-block-paragraph\"><\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Podemos observar el hecho de que el conjunto de resultados ahora contiene 21 elementos, cada uno de los cuales contiene 2 valores. Como resultado, tenemos un total de 42 valores en el conjunto de resultados.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Ahora comparemos eso con la segunda query:<\/p>\n\n\n\n<div class=\"wp-block-kevinbatdorf-code-block-pro\" data-code-block-pro-font-family=\"Code-Pro-JetBrains-Mono\" style=\"font-size:.875rem;font-family:Code-Pro-JetBrains-Mono,ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,monospace;line-height:1.25rem;--cbp-tab-width:2;tab-size:var(--cbp-tab-width, 2)\"><span style=\"display:block;padding:16px 0 0 16px;margin-bottom:-1px;width:100%;text-align:left;background-color:#2e3440ff\"><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"54\" height=\"14\" viewBox=\"0 0 54 14\"><g fill=\"none\" fill-rule=\"evenodd\" transform=\"translate(1 1)\"><circle cx=\"6\" cy=\"6\" r=\"6\" fill=\"#FF5F56\" stroke=\"#E0443E\" stroke-width=\".5\"><\/circle><circle cx=\"26\" cy=\"6\" r=\"6\" fill=\"#FFBD2E\" stroke=\"#DEA123\" stroke-width=\".5\"><\/circle><circle cx=\"46\" cy=\"6\" r=\"6\" fill=\"#27C93F\" stroke=\"#1AAB29\" stroke-width=\".5\"><\/circle><\/g><\/svg><\/span><span role=\"button\" tabindex=\"0\" data-code=\";; was clause #5, now clause #4\n{:clause    [?release :release\/year ?year],\n :rows-in   21,\n :rows-out  3,\n :binds-in  [?release],\n :binds-out [?year ?release],\n :preds     ([(&lt; ?year 1970)])}\n \n;; was clause #4, now clause #5\n{:clause    [?release :release\/name ?album-name],\n :rows-in   3,\n :rows-out  3,\n :binds-in  [?year ?release],\n :binds-out [?album-name ?year]}\" style=\"color:#d8dee9ff;display:none\" aria-label=\"Copy\" class=\"code-block-pro-copy-button\"><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" style=\"width:24px;height:24px\" fill=\"none\" viewBox=\"0 0 24 24\" stroke=\"currentColor\" stroke-width=\"2\"><path class=\"with-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2m-6 9l2 2 4-4\"><\/path><path class=\"without-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2\"><\/path><\/svg><\/span><pre class=\"shiki nord\" style=\"background-color: #2e3440ff\" tabindex=\"0\"><code><span class=\"line\"><span style=\"color: #616E88\">;; was clause #5, now clause #4<\/span><\/span>\n<span class=\"line\"><span style=\"color: #ECEFF4\">{<\/span><span style=\"color: #D8DEE9FF\">:clause    <\/span><span style=\"color: #ECEFF4\">[<\/span><span style=\"color: #D8DEE9FF\">?release :release\/year ?year<\/span><span style=\"color: #ECEFF4\">]<\/span><span style=\"color: #D8DEE9FF\">,<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\"> :rows-in   <\/span><span style=\"color: #B48EAD\">21<\/span><span style=\"color: #D8DEE9FF\">,<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\"> :rows-out  <\/span><span style=\"color: #B48EAD\">3<\/span><span style=\"color: #D8DEE9FF\">,<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\"> :binds-in  <\/span><span style=\"color: #ECEFF4\">[<\/span><span style=\"color: #D8DEE9FF\">?release<\/span><span style=\"color: #ECEFF4\">]<\/span><span style=\"color: #D8DEE9FF\">,<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\"> :binds-out <\/span><span style=\"color: #ECEFF4\">[<\/span><span style=\"color: #D8DEE9FF\">?year ?release<\/span><span style=\"color: #ECEFF4\">]<\/span><span style=\"color: #D8DEE9FF\">,<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\"> :preds     <\/span><span style=\"color: #ECEFF4\">([(<\/span><span style=\"color: #88C0D0\">&lt;<\/span><span style=\"color: #D8DEE9FF\"> ?year <\/span><span style=\"color: #B48EAD\">1970<\/span><span style=\"color: #ECEFF4\">)])}<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\"> <\/span><\/span>\n<span class=\"line\"><span style=\"color: #616E88\">;; was clause #4, now clause #5<\/span><\/span>\n<span class=\"line\"><span style=\"color: #ECEFF4\">{<\/span><span style=\"color: #D8DEE9FF\">:clause    <\/span><span style=\"color: #ECEFF4\">[<\/span><span style=\"color: #D8DEE9FF\">?release :release\/name ?album-name<\/span><span style=\"color: #ECEFF4\">]<\/span><span style=\"color: #D8DEE9FF\">,<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\"> :rows-in   <\/span><span style=\"color: #B48EAD\">3<\/span><span style=\"color: #D8DEE9FF\">,<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\"> :rows-out  <\/span><span style=\"color: #B48EAD\">3<\/span><span style=\"color: #D8DEE9FF\">,<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\"> :binds-in  <\/span><span style=\"color: #ECEFF4\">[<\/span><span style=\"color: #D8DEE9FF\">?year ?release<\/span><span style=\"color: #ECEFF4\">]<\/span><span style=\"color: #D8DEE9FF\">,<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\"> :binds-out <\/span><span style=\"color: #ECEFF4\">[<\/span><span style=\"color: #D8DEE9FF\">?album-name ?year<\/span><span style=\"color: #ECEFF4\">]}<\/span><\/span><\/code><\/pre><\/div>\n\n\n\n<p class=\"wp-block-paragraph\"><\/p>\n\n\n\n<p class=\"wp-block-paragraph\">La cl\u00e1usula 4 de la segunda query reduce nuestro conjunto de resultados de 21 a 3, pero introduce otro valor en el conjunto de resultados. El conjunto de resultados ahora contiene 3 filas, cada una con 2 valores, lo que da como resultado un total de 6 valores.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Ahora la cl\u00e1usula que encuentra el nombre del \u00e1lbum solo tiene que hacerlo para 3 \u00e1lbumes, en lugar de buscarlos para 21 \u00e1lbumes y descartar todos menos 3, despu\u00e9s de reducir el a\u00f1o de lanzamiento. Como puedes imaginar, esto ahorra bastante trabajo a escalas mayores.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Conclusi\u00f3n<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Esta es solo una de las formas en que puedes utilizar la informaci\u00f3n devuelta por query-stats para comprender y mejorar tus queries. Tambi\u00e9n puedes encontrar que las query-stats son \u00fatiles al razonar por qu\u00e9 su consulta funciona de manera diferente dada una distribuci\u00f3n diferente de los datos subyacentes, razonar a trav\u00e9s de reglas de query recursiva, etc.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Query-stats (Estad\u00edsticas de consulta)  es una nueva caracter\u00edstica que brinda a los usuarios visibilidad de las decisiones tomadas por el motor de consultas mientras procesa su query.<\/p>\n","protected":false},"author":178110177,"featured_media":24847,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_acf_changed":false,"_jetpack_newsletter_access":"","_jetpack_dont_email_post_to_subs":false,"_jetpack_newsletter_tier_id":0,"_jetpack_memberships_contains_paywalled_content":false,"_wpcom_ai_launchpad_first_post":false,"_jetpack_feature_clip_id":0,"_jetpack_memberships_contains_paid_content":false,"footnotes":"","jetpack_post_was_ever_published":false},"categories":[2499,2589],"tags":[2675,2585,2674],"class_list":["post-26015","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-engineering-es","category-software-engineering-es","tag-clause-ordering-es","tag-datomic-es","tag-query-stats-es"],"acf":[],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v28.5 - https:\/\/yoast.com\/product\/yoast-seo-wordpress\/ -->\n<title>Aprovechando las estad\u00edsticas de consultas de Datomic para Optimizar el Orden de las Cl\u00e1usulas - Building Nubank<\/title>\n<meta name=\"description\" content=\"Query-stats (Estad\u00edsticas de consulta) es una nueva caracter\u00edstica que brinda a los usuarios visibilidad de las decisiones tomadas por el motor de consultas mientras procesa su query.\" \/>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/building.nu.com\/es\/aprovechando-las-estadisticas-de-consultas-de-datomic-para-optimizar-el-orden-de-las-clausulas\/\" \/>\n<meta property=\"og:locale\" content=\"es_ES\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Aprovechando las estad\u00edsticas de consultas de Datomic para Optimizar el Orden de las Cl\u00e1usulas - Building Nubank\" \/>\n<meta property=\"og:description\" content=\"Query-stats (Estad\u00edsticas de consulta) es una nueva caracter\u00edstica que brinda a los usuarios visibilidad de las decisiones tomadas por el motor de consultas mientras procesa su query.\" \/>\n<meta property=\"og:url\" content=\"https:\/\/building.nu.com\/es\/aprovechando-las-estadisticas-de-consultas-de-datomic-para-optimizar-el-orden-de-las-clausulas\/\" \/>\n<meta property=\"og:site_name\" content=\"Building Nubank\" \/>\n<meta property=\"article:published_time\" content=\"2023-02-03T21:58:12+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2024-05-22T14:21:08+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/i0.wp.com\/building.nu.com\/wp-content\/uploads\/2023\/02\/optimizing-datomic-queries_Feature_1200x675-1.jpg?fit=1200%2C675&ssl=1\" \/>\n\t<meta property=\"og:image:width\" content=\"1200\" \/>\n\t<meta property=\"og:image:height\" content=\"675\" \/>\n\t<meta property=\"og:image:type\" content=\"image\/jpeg\" \/>\n<meta name=\"author\" content=\"Keith Harper - Staff Software Engineer at Nubank\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:label1\" content=\"Escrito por\" \/>\n\t<meta name=\"twitter:data1\" content=\"Keith Harper - Staff Software Engineer at Nubank\" \/>\n\t<meta name=\"twitter:label2\" content=\"Tiempo de lectura\" \/>\n\t<meta name=\"twitter:data2\" content=\"6 minutos\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\\\/\\\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\\\/\\\/building.nu.com\\\/es\\\/aprovechando-las-estadisticas-de-consultas-de-datomic-para-optimizar-el-orden-de-las-clausulas\\\/#article\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/building.nu.com\\\/es\\\/aprovechando-las-estadisticas-de-consultas-de-datomic-para-optimizar-el-orden-de-las-clausulas\\\/\"},\"author\":{\"name\":\"Keith Harper - Staff Software Engineer at Nubank\",\"@id\":\"https:\\\/\\\/building.nu.com\\\/es\\\/#\\\/schema\\\/person\\\/dee6b0c1f5f1cb2026efc53d473ad8c3\"},\"headline\":\"Aprovechando las estad\u00edsticas de consultas de Datomic para Optimizar el Orden de las Cl\u00e1usulas\",\"datePublished\":\"2023-02-03T21:58:12+00:00\",\"dateModified\":\"2024-05-22T14:21:08+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\\\/\\\/building.nu.com\\\/es\\\/aprovechando-las-estadisticas-de-consultas-de-datomic-para-optimizar-el-orden-de-las-clausulas\\\/\"},\"wordCount\":1221,\"commentCount\":0,\"image\":{\"@id\":\"https:\\\/\\\/building.nu.com\\\/es\\\/aprovechando-las-estadisticas-de-consultas-de-datomic-para-optimizar-el-orden-de-las-clausulas\\\/#primaryimage\"},\"thumbnailUrl\":\"https:\\\/\\\/i0.wp.com\\\/building.nu.com\\\/wp-content\\\/uploads\\\/2023\\\/02\\\/optimizing-datomic-queries_Feature_1200x675-1.jpg?fit=1200%2C675&ssl=1\",\"keywords\":[\"Clause Ordering\",\"Datomic\",\"query-stats\"],\"articleSection\":[\"Engineering\",\"Software Engineering\"],\"inLanguage\":\"es\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\\\/\\\/building.nu.com\\\/es\\\/aprovechando-las-estadisticas-de-consultas-de-datomic-para-optimizar-el-orden-de-las-clausulas\\\/#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\\\/\\\/building.nu.com\\\/es\\\/aprovechando-las-estadisticas-de-consultas-de-datomic-para-optimizar-el-orden-de-las-clausulas\\\/\",\"url\":\"https:\\\/\\\/building.nu.com\\\/es\\\/aprovechando-las-estadisticas-de-consultas-de-datomic-para-optimizar-el-orden-de-las-clausulas\\\/\",\"name\":\"Aprovechando las estad\u00edsticas de consultas de Datomic para Optimizar el Orden de las Cl\u00e1usulas - Building Nubank\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/building.nu.com\\\/es\\\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\\\/\\\/building.nu.com\\\/es\\\/aprovechando-las-estadisticas-de-consultas-de-datomic-para-optimizar-el-orden-de-las-clausulas\\\/#primaryimage\"},\"image\":{\"@id\":\"https:\\\/\\\/building.nu.com\\\/es\\\/aprovechando-las-estadisticas-de-consultas-de-datomic-para-optimizar-el-orden-de-las-clausulas\\\/#primaryimage\"},\"thumbnailUrl\":\"https:\\\/\\\/i0.wp.com\\\/building.nu.com\\\/wp-content\\\/uploads\\\/2023\\\/02\\\/optimizing-datomic-queries_Feature_1200x675-1.jpg?fit=1200%2C675&ssl=1\",\"datePublished\":\"2023-02-03T21:58:12+00:00\",\"dateModified\":\"2024-05-22T14:21:08+00:00\",\"author\":{\"@id\":\"https:\\\/\\\/building.nu.com\\\/es\\\/#\\\/schema\\\/person\\\/dee6b0c1f5f1cb2026efc53d473ad8c3\"},\"description\":\"Query-stats (Estad\u00edsticas de consulta) es una nueva caracter\u00edstica que brinda a los usuarios visibilidad de las decisiones tomadas por el motor de consultas mientras procesa su query.\",\"breadcrumb\":{\"@id\":\"https:\\\/\\\/building.nu.com\\\/es\\\/aprovechando-las-estadisticas-de-consultas-de-datomic-para-optimizar-el-orden-de-las-clausulas\\\/#breadcrumb\"},\"inLanguage\":\"es\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\\\/\\\/building.nu.com\\\/es\\\/aprovechando-las-estadisticas-de-consultas-de-datomic-para-optimizar-el-orden-de-las-clausulas\\\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"es\",\"@id\":\"https:\\\/\\\/building.nu.com\\\/es\\\/aprovechando-las-estadisticas-de-consultas-de-datomic-para-optimizar-el-orden-de-las-clausulas\\\/#primaryimage\",\"url\":\"https:\\\/\\\/i0.wp.com\\\/building.nu.com\\\/wp-content\\\/uploads\\\/2023\\\/02\\\/optimizing-datomic-queries_Feature_1200x675-1.jpg?fit=1200%2C675&ssl=1\",\"contentUrl\":\"https:\\\/\\\/i0.wp.com\\\/building.nu.com\\\/wp-content\\\/uploads\\\/2023\\\/02\\\/optimizing-datomic-queries_Feature_1200x675-1.jpg?fit=1200%2C675&ssl=1\",\"width\":1200,\"height\":675},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\\\/\\\/building.nu.com\\\/es\\\/aprovechando-las-estadisticas-de-consultas-de-datomic-para-optimizar-el-orden-de-las-clausulas\\\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\\\/\\\/building.nu.com\\\/es\\\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Aprovechando las estad\u00edsticas de consultas de Datomic para Optimizar el Orden de las Cl\u00e1usulas\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\\\/\\\/building.nu.com\\\/es\\\/#website\",\"url\":\"https:\\\/\\\/building.nu.com\\\/es\\\/\",\"name\":\"Building Nubank\",\"description\":\"We make the extraordinary happen\",\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\\\/\\\/building.nu.com\\\/es\\\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"es\"},{\"@type\":\"Person\",\"@id\":\"https:\\\/\\\/building.nu.com\\\/es\\\/#\\\/schema\\\/person\\\/dee6b0c1f5f1cb2026efc53d473ad8c3\",\"name\":\"Keith Harper - Staff Software Engineer at Nubank\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"es\",\"@id\":\"https:\\\/\\\/building.nubank.com.br\\\/wp-content\\\/uploads\\\/2023\\\/02\\\/avatar_user_178110177_1675452580-96x96.png\",\"url\":\"https:\\\/\\\/building.nubank.com.br\\\/wp-content\\\/uploads\\\/2023\\\/02\\\/avatar_user_178110177_1675452580-96x96.png\",\"contentUrl\":\"https:\\\/\\\/building.nubank.com.br\\\/wp-content\\\/uploads\\\/2023\\\/02\\\/avatar_user_178110177_1675452580-96x96.png\",\"caption\":\"Keith Harper - Staff Software Engineer at Nubank\"},\"description\":\"Keith Harper is responsible for developing and supporting Datomic, helping Nubank by educating and empowering engineering teams. He has a degree in Information Technology from Georgia Southern University. Keith joined Nubank in 2021 and has extensive experience developing software using Clojure and Datomic. He also is a fan of Hearthstone and other digital card games.\",\"url\":\"https:\\\/\\\/building.nu.com\\\/es\\\/author\\\/keith-harper\\\/\"}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"Aprovechando las estad\u00edsticas de consultas de Datomic para Optimizar el Orden de las Cl\u00e1usulas - Building Nubank","description":"Query-stats (Estad\u00edsticas de consulta) es una nueva caracter\u00edstica que brinda a los usuarios visibilidad de las decisiones tomadas por el motor de consultas mientras procesa su query.","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:\/\/building.nu.com\/es\/aprovechando-las-estadisticas-de-consultas-de-datomic-para-optimizar-el-orden-de-las-clausulas\/","og_locale":"es_ES","og_type":"article","og_title":"Aprovechando las estad\u00edsticas de consultas de Datomic para Optimizar el Orden de las Cl\u00e1usulas - Building Nubank","og_description":"Query-stats (Estad\u00edsticas de consulta) es una nueva caracter\u00edstica que brinda a los usuarios visibilidad de las decisiones tomadas por el motor de consultas mientras procesa su query.","og_url":"https:\/\/building.nu.com\/es\/aprovechando-las-estadisticas-de-consultas-de-datomic-para-optimizar-el-orden-de-las-clausulas\/","og_site_name":"Building Nubank","article_published_time":"2023-02-03T21:58:12+00:00","article_modified_time":"2024-05-22T14:21:08+00:00","og_image":[{"width":1200,"height":675,"url":"https:\/\/i0.wp.com\/building.nu.com\/wp-content\/uploads\/2023\/02\/optimizing-datomic-queries_Feature_1200x675-1.jpg?fit=1200%2C675&ssl=1","type":"image\/jpeg"}],"author":"Keith Harper - Staff Software Engineer at Nubank","twitter_card":"summary_large_image","twitter_misc":{"Escrito por":"Keith Harper - Staff Software Engineer at Nubank","Tiempo de lectura":"6 minutos"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/building.nu.com\/es\/aprovechando-las-estadisticas-de-consultas-de-datomic-para-optimizar-el-orden-de-las-clausulas\/#article","isPartOf":{"@id":"https:\/\/building.nu.com\/es\/aprovechando-las-estadisticas-de-consultas-de-datomic-para-optimizar-el-orden-de-las-clausulas\/"},"author":{"name":"Keith Harper - Staff Software Engineer at Nubank","@id":"https:\/\/building.nu.com\/es\/#\/schema\/person\/dee6b0c1f5f1cb2026efc53d473ad8c3"},"headline":"Aprovechando las estad\u00edsticas de consultas de Datomic para Optimizar el Orden de las Cl\u00e1usulas","datePublished":"2023-02-03T21:58:12+00:00","dateModified":"2024-05-22T14:21:08+00:00","mainEntityOfPage":{"@id":"https:\/\/building.nu.com\/es\/aprovechando-las-estadisticas-de-consultas-de-datomic-para-optimizar-el-orden-de-las-clausulas\/"},"wordCount":1221,"commentCount":0,"image":{"@id":"https:\/\/building.nu.com\/es\/aprovechando-las-estadisticas-de-consultas-de-datomic-para-optimizar-el-orden-de-las-clausulas\/#primaryimage"},"thumbnailUrl":"https:\/\/i0.wp.com\/building.nu.com\/wp-content\/uploads\/2023\/02\/optimizing-datomic-queries_Feature_1200x675-1.jpg?fit=1200%2C675&ssl=1","keywords":["Clause Ordering","Datomic","query-stats"],"articleSection":["Engineering","Software Engineering"],"inLanguage":"es","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/building.nu.com\/es\/aprovechando-las-estadisticas-de-consultas-de-datomic-para-optimizar-el-orden-de-las-clausulas\/#respond"]}]},{"@type":"WebPage","@id":"https:\/\/building.nu.com\/es\/aprovechando-las-estadisticas-de-consultas-de-datomic-para-optimizar-el-orden-de-las-clausulas\/","url":"https:\/\/building.nu.com\/es\/aprovechando-las-estadisticas-de-consultas-de-datomic-para-optimizar-el-orden-de-las-clausulas\/","name":"Aprovechando las estad\u00edsticas de consultas de Datomic para Optimizar el Orden de las Cl\u00e1usulas - Building Nubank","isPartOf":{"@id":"https:\/\/building.nu.com\/es\/#website"},"primaryImageOfPage":{"@id":"https:\/\/building.nu.com\/es\/aprovechando-las-estadisticas-de-consultas-de-datomic-para-optimizar-el-orden-de-las-clausulas\/#primaryimage"},"image":{"@id":"https:\/\/building.nu.com\/es\/aprovechando-las-estadisticas-de-consultas-de-datomic-para-optimizar-el-orden-de-las-clausulas\/#primaryimage"},"thumbnailUrl":"https:\/\/i0.wp.com\/building.nu.com\/wp-content\/uploads\/2023\/02\/optimizing-datomic-queries_Feature_1200x675-1.jpg?fit=1200%2C675&ssl=1","datePublished":"2023-02-03T21:58:12+00:00","dateModified":"2024-05-22T14:21:08+00:00","author":{"@id":"https:\/\/building.nu.com\/es\/#\/schema\/person\/dee6b0c1f5f1cb2026efc53d473ad8c3"},"description":"Query-stats (Estad\u00edsticas de consulta) es una nueva caracter\u00edstica que brinda a los usuarios visibilidad de las decisiones tomadas por el motor de consultas mientras procesa su query.","breadcrumb":{"@id":"https:\/\/building.nu.com\/es\/aprovechando-las-estadisticas-de-consultas-de-datomic-para-optimizar-el-orden-de-las-clausulas\/#breadcrumb"},"inLanguage":"es","potentialAction":[{"@type":"ReadAction","target":["https:\/\/building.nu.com\/es\/aprovechando-las-estadisticas-de-consultas-de-datomic-para-optimizar-el-orden-de-las-clausulas\/"]}]},{"@type":"ImageObject","inLanguage":"es","@id":"https:\/\/building.nu.com\/es\/aprovechando-las-estadisticas-de-consultas-de-datomic-para-optimizar-el-orden-de-las-clausulas\/#primaryimage","url":"https:\/\/i0.wp.com\/building.nu.com\/wp-content\/uploads\/2023\/02\/optimizing-datomic-queries_Feature_1200x675-1.jpg?fit=1200%2C675&ssl=1","contentUrl":"https:\/\/i0.wp.com\/building.nu.com\/wp-content\/uploads\/2023\/02\/optimizing-datomic-queries_Feature_1200x675-1.jpg?fit=1200%2C675&ssl=1","width":1200,"height":675},{"@type":"BreadcrumbList","@id":"https:\/\/building.nu.com\/es\/aprovechando-las-estadisticas-de-consultas-de-datomic-para-optimizar-el-orden-de-las-clausulas\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/building.nu.com\/es\/"},{"@type":"ListItem","position":2,"name":"Aprovechando las estad\u00edsticas de consultas de Datomic para Optimizar el Orden de las Cl\u00e1usulas"}]},{"@type":"WebSite","@id":"https:\/\/building.nu.com\/es\/#website","url":"https:\/\/building.nu.com\/es\/","name":"Building Nubank","description":"We make the extraordinary happen","potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/building.nu.com\/es\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"es"},{"@type":"Person","@id":"https:\/\/building.nu.com\/es\/#\/schema\/person\/dee6b0c1f5f1cb2026efc53d473ad8c3","name":"Keith Harper - Staff Software Engineer at Nubank","image":{"@type":"ImageObject","inLanguage":"es","@id":"https:\/\/building.nubank.com.br\/wp-content\/uploads\/2023\/02\/avatar_user_178110177_1675452580-96x96.png","url":"https:\/\/building.nubank.com.br\/wp-content\/uploads\/2023\/02\/avatar_user_178110177_1675452580-96x96.png","contentUrl":"https:\/\/building.nubank.com.br\/wp-content\/uploads\/2023\/02\/avatar_user_178110177_1675452580-96x96.png","caption":"Keith Harper - Staff Software Engineer at Nubank"},"description":"Keith Harper is responsible for developing and supporting Datomic, helping Nubank by educating and empowering engineering teams. He has a degree in Information Technology from Georgia Southern University. Keith joined Nubank in 2021 and has extensive experience developing software using Clojure and Datomic. He also is a fan of Hearthstone and other digital card games.","url":"https:\/\/building.nu.com\/es\/author\/keith-harper\/"}]}},"jetpack_shortlink":"https:\/\/wp.me\/pbKBB5-6LB","jetpack_sharing_enabled":true,"jetpack_featured_media_url":"https:\/\/i0.wp.com\/building.nu.com\/wp-content\/uploads\/2023\/02\/optimizing-datomic-queries_Feature_1200x675-1.jpg?fit=1200%2C675&ssl=1","_links":{"self":[{"href":"https:\/\/building.nu.com\/es\/wp-json\/wp\/v2\/posts\/26015","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/building.nu.com\/es\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/building.nu.com\/es\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/building.nu.com\/es\/wp-json\/wp\/v2\/users\/178110177"}],"replies":[{"embeddable":true,"href":"https:\/\/building.nu.com\/es\/wp-json\/wp\/v2\/comments?post=26015"}],"version-history":[{"count":4,"href":"https:\/\/building.nu.com\/es\/wp-json\/wp\/v2\/posts\/26015\/revisions"}],"predecessor-version":[{"id":29342,"href":"https:\/\/building.nu.com\/es\/wp-json\/wp\/v2\/posts\/26015\/revisions\/29342"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/building.nu.com\/es\/wp-json\/wp\/v2\/media\/24847"}],"wp:attachment":[{"href":"https:\/\/building.nu.com\/es\/wp-json\/wp\/v2\/media?parent=26015"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/building.nu.com\/es\/wp-json\/wp\/v2\/categories?post=26015"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/building.nu.com\/es\/wp-json\/wp\/v2\/tags?post=26015"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}