{"id":11065,"date":"2021-04-28T16:03:57","date_gmt":"2021-04-28T23:03:57","guid":{"rendered":"https:\/\/www.couchbase.com\/blog\/?p=11065"},"modified":"2024-05-08T07:22:25","modified_gmt":"2024-05-08T14:22:25","slug":"craft-the-right-query-get-the-right-performance","status":"publish","type":"post","link":"https:\/\/www.couchbase.com\/blog\/pt\/craft-the-right-query-get-the-right-performance\/","title":{"rendered":"Crie a consulta certa, obtenha o desempenho certo"},"content":{"rendered":"<p>H\u00e1 um \u00f3timo blog sobre como obter o melhor desempenho de nosso servi\u00e7o de indexa\u00e7\u00e3o: <a href=\"https:\/\/www.couchbase.com\/blog\/pt\/create-right-index-get-right-performance\/\">\"Crie o \u00edndice certo, obtenha o desempenho certo\".<\/a>Esse blog e seus conselhos resistiram ao teste do tempo. Ent\u00e3o, por que n\u00e3o ter um blog relacionado a consultas com o mesmo nome?<\/p>\n<p>De qualquer forma, acho que o mesmo pode ser dito sobre nosso servi\u00e7o de consulta - para obter o desempenho certo, crie a consulta certa. O servi\u00e7o de \u00edndice pode ser muito criticado por ser o \u00fanico contribuinte para o desempenho da consulta. Mas h\u00e1 momentos em que tanto a consulta quanto o \u00edndice que voc\u00ea est\u00e1 usando precisam ser alterados.<\/p>\n<p>Esperamos poder mostrar aqui um exemplo em que pode ser apenas um ajuste de consulta que precisa ser feito para obter o desempenho de n\u00edvel empresarial pelo qual o Couchbase \u00e9 conhecido. O exemplo a seguir \u00e9 baseado em uma pergunta que nos foi feita por um de nossos clientes, portanto, esperamos que seja \u00fatil para v\u00e1rias pessoas que usam o Couchbase \"com raiva\".<\/p>\n<h3>Seu ambiente<\/h3>\n<p>Vamos usar um exemplo e, al\u00e9m disso, vamos facilitar o acompanhamento, pois sou um grande f\u00e3 de blogs que permitem que os leitores acompanhem o processo, se desejarem. Para definir as regras b\u00e1sicas, aqui est\u00e3o alguns componentes que voc\u00ea poderia usar para fazer esse exemplo acontecer:<\/p>\n<ol>\n<li>O sempre \u00fatil <a href=\"https:\/\/cloud.couchbase.com\/sign-up\">https:\/\/cloud.couchbase.com\/sign-up<\/a> ambiente de desenvolvimento. Est\u00e1 na sua rede em uma praia em Bali? Entendo que, se voc\u00ea acionar seu pr\u00f3prio cont\u00eainer do docker do Couchbase, os ventiladores ficar\u00e3o em chamas e haver\u00e1 areia diretamente no seu Mojito. Desde que voc\u00ea tenha uma conex\u00e3o com a Internet, podemos lhe oferecer 30 minutos de ambiente de desenvolvimento gratuitamente! Obviamente, voc\u00ea est\u00e1 livre para usar qualquer ambiente do Couchbase que j\u00e1 tenha.<\/li>\n<li>O conjunto de dados de amostra de viagem<\/li>\n<li><a href=\"https:\/\/docs.couchbase.com\/server\/current\/n1ql\/n1ql-language-reference\/indexing-arrays.html\">Sua documenta\u00e7\u00e3o \u00fatil sobre a matriz N1QL<\/a><\/li>\n<li><a href=\"https:\/\/www.couchbase.com\/blog\/pt\/working-json-arrays-n1ql\/\">Este pr\u00e1tico blog de refer\u00eancia de bolso sobre como trabalhar com matrizes<\/a><\/li>\n<\/ol>\n<p><em><strong>N.B. Os exemplos de N1QL aqui usar\u00e3o nosso recurso de escopos\/cole\u00e7\u00f5es - como tal, o contexto do bucket \u00e9 definido como o escopo padr\u00e3o no conjunto de dados de amostra de viagem.<\/strong><\/em><\/p>\n<h4>Alguns contextos do mundo real<\/h4>\n<p>Para definir o cen\u00e1rio deste exemplo, podemos usar um caso de uso comum: gera\u00e7\u00e3o de campanhas de marketing. Um exemplo dessa consulta pode ser encontrar visitantes do hotel que tenham deixado uma avalia\u00e7\u00e3o e gostado do hotel. Esses dados podem fazer com que eles tenham direito a recompensas de um programa de fidelidade, estadias em hot\u00e9is mais bem direcionados\/similares ou apenas uma vis\u00e3o dos usu\u00e1rios que provavelmente deixar\u00e3o uma avalia\u00e7\u00e3o\/gosto. Todos esses insights fornecem dados valiosos para atender melhor aos h\u00f3spedes do hotel.<\/p>\n<p>O principal objetivo desse exemplo espec\u00edfico \u00e9 mostrar as possibilidades de consultar v\u00e1rias matrizes em um \u00fanico documento JSON e, novamente, plantar a semente de que, \u00e0s vezes, \u00e9 poss\u00edvel obter ainda mais desempenho do servi\u00e7o de consulta depois de criar o \u00edndice correto. Afinal, voc\u00ea est\u00e1 usando um sistema que permite campos de dados din\u00e2micos, e as matrizes s\u00e3o uma grande parte da flexibilidade do uso do JSON como formato de dados.<\/p>\n<h3>Come\u00e7os humildes<\/h3>\n<p>Uma forma comum de consultar matrizes no n1ql (conforme explicado no blog vinculado) \u00e9 a seguinte:<\/p>\n<pre class=\"lang:default decode:true\">SELECT (ANY v IN [1, 2, 3, 4, 5] SATISFIES v &gt; 4 END) as is_found, (ANY v IN [1, 2, 3, 4, 5] SATISFIES v = 7 END) as not_found;<\/pre>\n<p>Neste exemplo, estamos dizendo: \"obtenha os itens da matriz que correspondem \u00e0 condi\u00e7\u00e3o na instru\u00e7\u00e3o SATISFIES\".<\/p>\n<p>Se aplic\u00e1ssemos esse m\u00e9todo \u00e0s nossas tentativas de consultar v\u00e1rias matrizes em um documento JSON, provavelmente ter\u00edamos a seguinte apar\u00eancia:<\/p>\n<pre class=\"lang:default decode:true\">SELECT public_likes, reviews FROM _default WHERE type=\"hotel\"\r\nAND ANY r IN reviews SATISFIES r.author = \"Ozella Sipes\" END\r\nAND ANY l IN public_likes SATISFIES l = \"Ozella Sipes\" END LIMIT 1;<\/pre>\n<p>No entanto, isso n\u00e3o resultaria em uma consulta de alto desempenho, pois o N1QL atualmente exige que voc\u00ea construa uma \u00fanica matriz index\u00e1vel a partir das matrizes do documento, <a href=\"https:\/\/docs.couchbase.com\/server\/current\/n1ql\/n1ql-language-reference\/indexing-arrays.html#array-expr\">conforme observado aqui<\/a>.<\/p>\n<h4>Cria\u00e7\u00e3o de \u00edndices para v\u00e1rios campos de matriz<\/h4>\n<p>Ent\u00e3o, como posso construir esse \u00edndice? Vamos dar um exemplo, usando nosso caso de uso de coleta de dados sobre h\u00f3spedes que gostaram e avaliaram nossos hot\u00e9is.<\/p>\n<pre class=\"lang:default decode:true\">CREATE INDEX `reviewers_likes_idx` ON `_default`( DISTINCT ARRAY ( DISTINCT ARRAY [l,r.author]\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 FOR r IN\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 reviews\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 END)\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 FOR l in public_likes END) WHERE type=\"hotel\";<\/pre>\n<p>O que estamos fazendo aqui \u00e9 criar um \u00edndice com uma \u00fanica matriz de curtidas e avalia\u00e7\u00f5es combinadas. Essas s\u00e3o as pr\u00e1ticas recomendadas e est\u00e3o de acordo com a observa\u00e7\u00e3o em nossa documenta\u00e7\u00e3o. Apenas para mostrar uma maneira que voc\u00ea pode ter pensado ser a correta: aqui est\u00e1 a maneira n\u00e3o suportada e definitivamente n\u00e3o indexar v\u00e1rios campos de matriz:<\/p>\n<pre class=\"lang:default decode:true\">CREATE INDEX `not_the_right_idx` ON `_default`( DISTINCT (ARRAY r.field FOR r in json_obj END), likes);<\/pre>\n<p><strong>Isso indexaria v\u00e1rios campos de matriz - o que n\u00e3o \u00e9 aconselh\u00e1vel.<\/strong><\/p>\n<h4>Aprimorando a consulta<\/h4>\n<p>Abaixo est\u00e3o dois exemplos de consultas que foram executadas em nosso query workbench. Usando minha consulta aprimorada, reduzi meu tempo de execu\u00e7\u00e3o de 956,3 ms para aproximadamente 4 ms. Experimente voc\u00ea mesmo, a consulta aprimorada est\u00e1 no final deste blog.<\/p>\n<h5>Consulta sem desempenho<\/h5>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"alignnone size-large wp-image-11127\" src=\"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/2021\/04\/non_performant_query-1024x320.png\" alt=\"Non Performant N1QL query using Primary Index\" width=\"900\" height=\"281\" srcset=\"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2021\/04\/non_performant_query-1024x320.png 1024w, https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2021\/04\/non_performant_query-300x94.png 300w, https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2021\/04\/non_performant_query-768x240.png 768w, https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2021\/04\/non_performant_query-20x6.png 20w, https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2021\/04\/non_performant_query.png 1140w\" sizes=\"auto, (max-width: 900px) 100vw, 900px\" \/><\/p>\n<p>&nbsp;<\/p>\n<h5>Consulta com desempenho aprimorado<\/h5>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"alignnone size-large wp-image-11128\" src=\"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/2021\/04\/performant_query-1024x295.png\" alt=\"Performant N1QL query using the customised multiple array index\" width=\"900\" height=\"259\" srcset=\"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2021\/04\/performant_query-1024x295.png 1024w, https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2021\/04\/performant_query-300x86.png 300w, https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2021\/04\/performant_query-768x221.png 768w, https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2021\/04\/performant_query-20x6.png 20w, https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2021\/04\/performant_query.png 1279w\" sizes=\"auto, (max-width: 900px) 100vw, 900px\" \/><\/p>\n<p>Em ess\u00eancia, ambas as consultas funcionariam, mas o tempo necess\u00e1rio para execut\u00e1-las \u00e9 muito diferente, e isso se deve ao fato de estarmos usando o \u00edndice cuidadosamente elaborado e de pr\u00e1ticas recomendadas na \u00faltima consulta. Se voc\u00ea acompanhou o processo at\u00e9 aqui, pode execut\u00e1-lo por conta pr\u00f3pria. Observe que adicionei \"Ozella Sipes\" para ser tanto um autor de avalia\u00e7\u00e3o quanto um curtidor p\u00fablico em um dos documentos do hotel para testar o funcionamento da minha consulta! Seus resultados podem ser diferentes dependendo do nome que voc\u00ea usar.<\/p>\n<pre class=\"lang:default decode:true\">SELECT META().id FROM _default WHERE type=\"hotel\"\r\nAND ANY l IN public_likes SATISFIES (\r\n\u00a0\u00a0\u00a0 ANY r IN reviews\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 SATISFIES [l,r.author] = [\"Ozella Sipes\", \"Ozella Sipes\"] END) END\r\nLIMIT 1;<\/pre>\n<p>Espero que este blog tenha sido \u00fatil e que tenha lhe dado uma ideia de que, em alguns casos, tamb\u00e9m \u00e9 necess\u00e1rio considerar o uso da consulta certa para obter o desempenho certo!<\/p>","protected":false},"excerpt":{"rendered":"<p>There is a great blog on getting the best performance out of our Indexing service: &#8220;Create the Right Index, Get the Right Performance.&#8221;, both that blog and its advice have stood the test of time. So why not have a [&hellip;]<\/p>","protected":false},"author":76077,"featured_media":11030,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_acf_changed":false,"inline_featured_image":false,"footnotes":""},"categories":[1815,8905,1812],"tags":[],"ppma_author":[9168],"class_list":["post-11065","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-best-practices-and-tutorials","category-couchbase-global-secondary-index","category-n1ql-query"],"acf":[],"yoast_head":"<!-- This site is optimized with the Yoast SEO Premium plugin v26.2 (Yoast SEO v26.2) - https:\/\/yoast.com\/wordpress\/plugins\/seo\/ -->\n<title>Craft the Right Query, Get the Right Performance - The Couchbase Blog<\/title>\n<meta name=\"description\" content=\"Using Couchbases N1QL language, this blog will show you how you can iteratively craft performant queries alongside your Indexes\" \/>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/www.couchbase.com\/blog\/pt\/craft-the-right-query-get-the-right-performance\/\" \/>\n<meta property=\"og:locale\" content=\"pt_BR\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Craft the Right Query, Get the Right Performance\" \/>\n<meta property=\"og:description\" content=\"Using Couchbases N1QL language, this blog will show you how you can iteratively craft performant queries alongside your Indexes\" \/>\n<meta property=\"og:url\" content=\"https:\/\/www.couchbase.com\/blog\/pt\/craft-the-right-query-get-the-right-performance\/\" \/>\n<meta property=\"og:site_name\" content=\"The Couchbase Blog\" \/>\n<meta property=\"article:published_time\" content=\"2021-04-28T23:03:57+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2024-05-08T14:22:25+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/2021\/03\/feature-image-c.jpg\" \/>\n\t<meta property=\"og:image:width\" content=\"1200\" \/>\n\t<meta property=\"og:image:height\" content=\"628\" \/>\n\t<meta property=\"og:image:type\" content=\"image\/jpeg\" \/>\n<meta name=\"author\" content=\"Sam Redman, Solutions Engineer\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:label1\" content=\"Written by\" \/>\n\t<meta name=\"twitter:data1\" content=\"Sam Redman, Solutions Engineer\" \/>\n\t<meta name=\"twitter:label2\" content=\"Est. reading time\" \/>\n\t<meta name=\"twitter:data2\" content=\"5 minutos\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\/\/www.couchbase.com\/blog\/craft-the-right-query-get-the-right-performance\/#article\",\"isPartOf\":{\"@id\":\"https:\/\/www.couchbase.com\/blog\/craft-the-right-query-get-the-right-performance\/\"},\"author\":{\"name\":\"Sam Redman\",\"@id\":\"https:\/\/www.couchbase.com\/blog\/#\/schema\/person\/512e4ed8ed1188a93cb7c3aee277f408\"},\"headline\":\"Craft the Right Query, Get the Right Performance\",\"datePublished\":\"2021-04-28T23:03:57+00:00\",\"dateModified\":\"2024-05-08T14:22:25+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\/\/www.couchbase.com\/blog\/craft-the-right-query-get-the-right-performance\/\"},\"wordCount\":886,\"commentCount\":0,\"publisher\":{\"@id\":\"https:\/\/www.couchbase.com\/blog\/#organization\"},\"image\":{\"@id\":\"https:\/\/www.couchbase.com\/blog\/craft-the-right-query-get-the-right-performance\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2021\/03\/feature-image-c.jpg\",\"articleSection\":[\"Best Practices and Tutorials\",\"Couchbase Global Secondary Index\",\"SQL++ \/ N1QL Query\"],\"inLanguage\":\"pt-BR\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\/\/www.couchbase.com\/blog\/craft-the-right-query-get-the-right-performance\/#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\/\/www.couchbase.com\/blog\/craft-the-right-query-get-the-right-performance\/\",\"url\":\"https:\/\/www.couchbase.com\/blog\/craft-the-right-query-get-the-right-performance\/\",\"name\":\"Craft the Right Query, Get the Right Performance - The Couchbase Blog\",\"isPartOf\":{\"@id\":\"https:\/\/www.couchbase.com\/blog\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\/\/www.couchbase.com\/blog\/craft-the-right-query-get-the-right-performance\/#primaryimage\"},\"image\":{\"@id\":\"https:\/\/www.couchbase.com\/blog\/craft-the-right-query-get-the-right-performance\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2021\/03\/feature-image-c.jpg\",\"datePublished\":\"2021-04-28T23:03:57+00:00\",\"dateModified\":\"2024-05-08T14:22:25+00:00\",\"description\":\"Using Couchbases N1QL language, this blog will show you how you can iteratively craft performant queries alongside your Indexes\",\"breadcrumb\":{\"@id\":\"https:\/\/www.couchbase.com\/blog\/craft-the-right-query-get-the-right-performance\/#breadcrumb\"},\"inLanguage\":\"pt-BR\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/www.couchbase.com\/blog\/craft-the-right-query-get-the-right-performance\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"pt-BR\",\"@id\":\"https:\/\/www.couchbase.com\/blog\/craft-the-right-query-get-the-right-performance\/#primaryimage\",\"url\":\"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2021\/03\/feature-image-c.jpg\",\"contentUrl\":\"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2021\/03\/feature-image-c.jpg\",\"width\":1200,\"height\":628,\"caption\":\"Introduction to Ottoman\"},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/www.couchbase.com\/blog\/craft-the-right-query-get-the-right-performance\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\/\/www.couchbase.com\/blog\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Craft the Right Query, Get the Right Performance\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\/\/www.couchbase.com\/blog\/#website\",\"url\":\"https:\/\/www.couchbase.com\/blog\/\",\"name\":\"The Couchbase Blog\",\"description\":\"Couchbase, the NoSQL Database\",\"publisher\":{\"@id\":\"https:\/\/www.couchbase.com\/blog\/#organization\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\/\/www.couchbase.com\/blog\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"pt-BR\"},{\"@type\":\"Organization\",\"@id\":\"https:\/\/www.couchbase.com\/blog\/#organization\",\"name\":\"The Couchbase Blog\",\"url\":\"https:\/\/www.couchbase.com\/blog\/\",\"logo\":{\"@type\":\"ImageObject\",\"inLanguage\":\"pt-BR\",\"@id\":\"https:\/\/www.couchbase.com\/blog\/#\/schema\/logo\/image\/\",\"url\":\"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/2023\/04\/admin-logo.png\",\"contentUrl\":\"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/2023\/04\/admin-logo.png\",\"width\":218,\"height\":34,\"caption\":\"The Couchbase Blog\"},\"image\":{\"@id\":\"https:\/\/www.couchbase.com\/blog\/#\/schema\/logo\/image\/\"}},{\"@type\":\"Person\",\"@id\":\"https:\/\/www.couchbase.com\/blog\/#\/schema\/person\/512e4ed8ed1188a93cb7c3aee277f408\",\"name\":\"Sam Redman\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"pt-BR\",\"@id\":\"https:\/\/www.couchbase.com\/blog\/#\/schema\/person\/image\/69dc9b1e46ceb237d29e1e4b626c6bcc\",\"url\":\"https:\/\/secure.gravatar.com\/avatar\/ee34f7b9f2c46328736cdab03babdfd5ddc97cdd4a12ddd4b1b2d0f455eba51d?s=96&d=mm&r=g\",\"contentUrl\":\"https:\/\/secure.gravatar.com\/avatar\/ee34f7b9f2c46328736cdab03babdfd5ddc97cdd4a12ddd4b1b2d0f455eba51d?s=96&d=mm&r=g\",\"caption\":\"Sam Redman\"},\"description\":\"Solutions Engineer at Couchbase. Sam has previously as a developer and an SRE before joining Couchbase.\",\"url\":\"https:\/\/www.couchbase.com\/blog\/pt\/author\/sam-redman\/\"}]}<\/script>\n<!-- \/ Yoast SEO Premium plugin. -->","yoast_head_json":{"title":"Craft the Right Query, Get the Right Performance - The Couchbase Blog","description":"Usando a linguagem N1QL do Couchbases, este blog mostrar\u00e1 como voc\u00ea pode criar iterativamente consultas de alto desempenho junto com seus \u00edndices","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/www.couchbase.com\/blog\/pt\/craft-the-right-query-get-the-right-performance\/","og_locale":"pt_BR","og_type":"article","og_title":"Craft the Right Query, Get the Right Performance","og_description":"Using Couchbases N1QL language, this blog will show you how you can iteratively craft performant queries alongside your Indexes","og_url":"https:\/\/www.couchbase.com\/blog\/pt\/craft-the-right-query-get-the-right-performance\/","og_site_name":"The Couchbase Blog","article_published_time":"2021-04-28T23:03:57+00:00","article_modified_time":"2024-05-08T14:22:25+00:00","og_image":[{"width":1200,"height":628,"url":"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/2021\/03\/feature-image-c.jpg","type":"image\/jpeg"}],"author":"Sam Redman, Solutions Engineer","twitter_card":"summary_large_image","twitter_misc":{"Written by":"Sam Redman, Solutions Engineer","Est. reading time":"5 minutos"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/www.couchbase.com\/blog\/craft-the-right-query-get-the-right-performance\/#article","isPartOf":{"@id":"https:\/\/www.couchbase.com\/blog\/craft-the-right-query-get-the-right-performance\/"},"author":{"name":"Sam Redman","@id":"https:\/\/www.couchbase.com\/blog\/#\/schema\/person\/512e4ed8ed1188a93cb7c3aee277f408"},"headline":"Craft the Right Query, Get the Right Performance","datePublished":"2021-04-28T23:03:57+00:00","dateModified":"2024-05-08T14:22:25+00:00","mainEntityOfPage":{"@id":"https:\/\/www.couchbase.com\/blog\/craft-the-right-query-get-the-right-performance\/"},"wordCount":886,"commentCount":0,"publisher":{"@id":"https:\/\/www.couchbase.com\/blog\/#organization"},"image":{"@id":"https:\/\/www.couchbase.com\/blog\/craft-the-right-query-get-the-right-performance\/#primaryimage"},"thumbnailUrl":"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2021\/03\/feature-image-c.jpg","articleSection":["Best Practices and Tutorials","Couchbase Global Secondary Index","SQL++ \/ N1QL Query"],"inLanguage":"pt-BR","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/www.couchbase.com\/blog\/craft-the-right-query-get-the-right-performance\/#respond"]}]},{"@type":"WebPage","@id":"https:\/\/www.couchbase.com\/blog\/craft-the-right-query-get-the-right-performance\/","url":"https:\/\/www.couchbase.com\/blog\/craft-the-right-query-get-the-right-performance\/","name":"Craft the Right Query, Get the Right Performance - The Couchbase Blog","isPartOf":{"@id":"https:\/\/www.couchbase.com\/blog\/#website"},"primaryImageOfPage":{"@id":"https:\/\/www.couchbase.com\/blog\/craft-the-right-query-get-the-right-performance\/#primaryimage"},"image":{"@id":"https:\/\/www.couchbase.com\/blog\/craft-the-right-query-get-the-right-performance\/#primaryimage"},"thumbnailUrl":"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2021\/03\/feature-image-c.jpg","datePublished":"2021-04-28T23:03:57+00:00","dateModified":"2024-05-08T14:22:25+00:00","description":"Usando a linguagem N1QL do Couchbases, este blog mostrar\u00e1 como voc\u00ea pode criar iterativamente consultas de alto desempenho junto com seus \u00edndices","breadcrumb":{"@id":"https:\/\/www.couchbase.com\/blog\/craft-the-right-query-get-the-right-performance\/#breadcrumb"},"inLanguage":"pt-BR","potentialAction":[{"@type":"ReadAction","target":["https:\/\/www.couchbase.com\/blog\/craft-the-right-query-get-the-right-performance\/"]}]},{"@type":"ImageObject","inLanguage":"pt-BR","@id":"https:\/\/www.couchbase.com\/blog\/craft-the-right-query-get-the-right-performance\/#primaryimage","url":"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2021\/03\/feature-image-c.jpg","contentUrl":"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2021\/03\/feature-image-c.jpg","width":1200,"height":628,"caption":"Introduction to Ottoman"},{"@type":"BreadcrumbList","@id":"https:\/\/www.couchbase.com\/blog\/craft-the-right-query-get-the-right-performance\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/www.couchbase.com\/blog\/"},{"@type":"ListItem","position":2,"name":"Craft the Right Query, Get the Right Performance"}]},{"@type":"WebSite","@id":"https:\/\/www.couchbase.com\/blog\/#website","url":"https:\/\/www.couchbase.com\/blog\/","name":"Blog do Couchbase","description":"Couchbase, o banco de dados NoSQL","publisher":{"@id":"https:\/\/www.couchbase.com\/blog\/#organization"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/www.couchbase.com\/blog\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"pt-BR"},{"@type":"Organization","@id":"https:\/\/www.couchbase.com\/blog\/#organization","name":"Blog do Couchbase","url":"https:\/\/www.couchbase.com\/blog\/","logo":{"@type":"ImageObject","inLanguage":"pt-BR","@id":"https:\/\/www.couchbase.com\/blog\/#\/schema\/logo\/image\/","url":"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/2023\/04\/admin-logo.png","contentUrl":"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/2023\/04\/admin-logo.png","width":218,"height":34,"caption":"The Couchbase Blog"},"image":{"@id":"https:\/\/www.couchbase.com\/blog\/#\/schema\/logo\/image\/"}},{"@type":"Person","@id":"https:\/\/www.couchbase.com\/blog\/#\/schema\/person\/512e4ed8ed1188a93cb7c3aee277f408","name":"Sam Redman","image":{"@type":"ImageObject","inLanguage":"pt-BR","@id":"https:\/\/www.couchbase.com\/blog\/#\/schema\/person\/image\/69dc9b1e46ceb237d29e1e4b626c6bcc","url":"https:\/\/secure.gravatar.com\/avatar\/ee34f7b9f2c46328736cdab03babdfd5ddc97cdd4a12ddd4b1b2d0f455eba51d?s=96&d=mm&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/ee34f7b9f2c46328736cdab03babdfd5ddc97cdd4a12ddd4b1b2d0f455eba51d?s=96&d=mm&r=g","caption":"Sam Redman"},"description":"Engenheiro de solu\u00e7\u00f5es da Couchbase. Sam j\u00e1 trabalhou como desenvolvedor e SRE antes de ingressar na Couchbase.","url":"https:\/\/www.couchbase.com\/blog\/pt\/author\/sam-redman\/"}]}},"authors":[{"term_id":9168,"user_id":76077,"is_guest":0,"slug":"sam-redman","display_name":"Sam Redman, Solutions Engineer","avatar_url":"https:\/\/secure.gravatar.com\/avatar\/ee34f7b9f2c46328736cdab03babdfd5ddc97cdd4a12ddd4b1b2d0f455eba51d?s=96&d=mm&r=g","author_category":"","last_name":"Redman","first_name":"Sam","job_title":"","user_url":"","description":"Sam Redman \u00e9 engenheiro de solu\u00e7\u00f5es na Couchbase. Sam trabalhou anteriormente em ambientes de desenvolvimento e SRE antes de ingressar na Couchbase."}],"_links":{"self":[{"href":"https:\/\/www.couchbase.com\/blog\/pt\/wp-json\/wp\/v2\/posts\/11065","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.couchbase.com\/blog\/pt\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.couchbase.com\/blog\/pt\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.couchbase.com\/blog\/pt\/wp-json\/wp\/v2\/users\/76077"}],"replies":[{"embeddable":true,"href":"https:\/\/www.couchbase.com\/blog\/pt\/wp-json\/wp\/v2\/comments?post=11065"}],"version-history":[{"count":0,"href":"https:\/\/www.couchbase.com\/blog\/pt\/wp-json\/wp\/v2\/posts\/11065\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.couchbase.com\/blog\/pt\/wp-json\/wp\/v2\/media\/11030"}],"wp:attachment":[{"href":"https:\/\/www.couchbase.com\/blog\/pt\/wp-json\/wp\/v2\/media?parent=11065"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.couchbase.com\/blog\/pt\/wp-json\/wp\/v2\/categories?post=11065"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.couchbase.com\/blog\/pt\/wp-json\/wp\/v2\/tags?post=11065"},{"taxonomy":"author","embeddable":true,"href":"https:\/\/www.couchbase.com\/blog\/pt\/wp-json\/wp\/v2\/ppma_author?post=11065"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}