{"id":7277,"date":"2019-08-22T17:42:26","date_gmt":"2019-08-23T00:42:26","guid":{"rendered":"https:\/\/www.couchbase.com\/blog\/?p=7277"},"modified":"2025-06-13T20:19:35","modified_gmt":"2025-06-14T03:19:35","slug":"primary-uses-for-couchbase-primary-index","status":"publish","type":"post","link":"https:\/\/www.couchbase.com\/blog\/pt\/primary-uses-for-couchbase-primary-index\/","title":{"rendered":"Principais usos do \u00edndice prim\u00e1rio do Couchbase"},"content":{"rendered":"<p>Algumas perguntas frequentes sobre o N1QL para servi\u00e7o de consulta:<\/p>\n<ol>\n<li>Quando \u00e9 que realmente usamos um \u00edndice prim\u00e1rio?<\/li>\n<li>Por que a <a href=\"https:\/\/www.couchbase.com\/blog\/pt\/n1ql-index-advisor-improve-query-performance-and-productivity\/\">o consultor de \u00edndices n\u00e3o recomenda<\/a> o \u00edndice prim\u00e1rio quando essa pode ser a \u00fanica op\u00e7\u00e3o?<\/li>\n<\/ol>\n<p>Continue lendo...<\/p>\n<p>O Couchbase \u00e9 um banco de dados distribu\u00eddo. Ele suporta um modelo de dados flex\u00edvel usando JSON. Cada documento em um bucket ter\u00e1 uma chave de documento exclusiva gerada pelo usu\u00e1rio. Essa exclusividade \u00e9 imposta durante a inser\u00e7\u00e3o ou atualiza\u00e7\u00e3o dos dados. Aqui est\u00e1 um exemplo de documento.<\/p>\n<pre class=\"theme:eclipse font-size:13 wrap:true whitespace-before:2 whitespace-after:1 lang:mysql decode:true\">select meta().id, travel\r\nfrom `travel-sample` travel\r\nwhere type = 'airline' limit 1;\r\n[\r\n  {\r\n      \"id\": \"airline_10\",\r\n      \"travel\": {\r\n          \"indicativo\": \"MILE-AIR\",\r\n          \"country\" (pa\u00eds): \"United States\" (Estados Unidos),\r\n          \"iata\": \"Q5\",\r\n          \"icao\": \"MLA\",\r\n          \"id\": 10,\r\n          \"name\": \"40-Mile Air\",\r\n          \"type\" (tipo): \"airline\"\r\n          }\r\n      }\r\n  ]<\/pre>\n<pre class=\"theme:eclipse font-size:14 whitespace-before:2 lang:mysql decode:true\">INSERT INTO customer (key, value) VALUES(\"cx:123\", {\"name\": \"joe\", \"zip\": 94040, \"state\":ca});\r\n\r\nSELECT META().id FROM customer;\r\n\r\ncx:123\r\n<\/pre>\n<p>Cada bucket do Couchbase pode armazenar dados de v\u00e1rios tipos: cliente, pedido, cat\u00e1logo etc. Ao carregar o conjunto de dados \"travel-sample\", voc\u00ea carrega cinco tipos distintos de documentos: companhia a\u00e9rea, aeroporto, hotel, rota, pontos de refer\u00eancia.<\/p>\n<p>Mas, por padr\u00e3o, o Couchbase n\u00e3o tem o equivalente \u00e0 \"varredura de tabela completa\" para varrer todos os documentos do in\u00edcio ao fim.  A varredura de \u00edndice prim\u00e1rio fornece a voc\u00ea o equivalente \u00e0 \"varredura de tabela completa\".<\/p>\n<p>CREATE PRIMARY INDEX ix_customer_primary ON customer;<\/p>\n<p>O que \u00e9 o \u00edndice prim\u00e1rio?<\/p>\n<ul>\n<li style=\"list-style-type: none\">\n<ul>\n<li>uma lista ordenada de todas as chaves de documento de cada tipo de documento dentro do bucket do cliente.<\/li>\n<li>mantidos de forma ass\u00edncrona, assim como outros \u00edndices secund\u00e1rios<\/li>\n<li>mant\u00e9m apenas a chave do documento e nada mais<\/li>\n<li>suporta todas as consist\u00eancias de varredura:\n<ul>\n<li>N\u00e3o limitado<\/li>\n<li>AT_PLUS<\/li>\n<li>REQUEST_PLUS<\/li>\n<\/ul>\n<\/li>\n<\/ul>\n<\/li>\n<\/ul>\n<p>O \u00edndice prim\u00e1rio permite que o mecanismo de consulta acesse todos os documentos e, em seguida, fa\u00e7a as opera\u00e7\u00f5es de filtragem, jun\u00e7\u00e3o, agrega\u00e7\u00e3o etc. sobre eles.<\/p>\n<p>EXPLAIN SELECT * from customer WHERE zip = 94040 name name = \"joe\" and type = \"cx\";<\/p>\n<p>Isso \u00e9 lento. Muito lento. Buscas desnecess\u00e1rias de documentos; filtragem desnecess\u00e1ria. Desperd\u00edcio de mem\u00f3ria e CPU. As varreduras prim\u00e1rias recuperar\u00e3o TODOS os documentos de todos os tipos no bucket, independentemente de a consulta os retornar ou n\u00e3o ao usu\u00e1rio.  Embora eu tenha dito que a varredura prim\u00e1ria \u00e9 como uma varredura de tabela, ela \u00e9 muito mais lenta do que a varredura de tabela, pois precisa varrer todos os documentos de todos os tipos.<\/p>\n<p><span style=\"color: #ff0000\"><strong>Voc\u00ea n\u00e3o deve usar \u00edndices prim\u00e1rios.  N\u00e3o os utilize.  Especialmente em produ\u00e7\u00e3o.<\/strong><\/span><\/p>\n<p><strong>\u00a0<\/strong>Ent\u00e3o, para come\u00e7ar, por que temos \u00edndices prim\u00e1rios?<\/p>\n<ol>\n<li>Quando estiver come\u00e7ando a trabalhar com novos dados de amostra, voc\u00ea poder\u00e1 executar a maioria das consultas sem se preocupar em criar \u00edndices espec\u00edficos. Nesse ponto, sua principal preocupa\u00e7\u00e3o \u00e9 entender os dados em vez de ajustar a taxa de transfer\u00eancia.<\/li>\n<li>Quando voc\u00ea souber o intervalo de chaves prim\u00e1rias que deseja verificar.\n<ol>\n<li><span class=\"theme:eclipse lang:mysql decode:true crayon-inline\">WHERE META().id entre \"cx:123\" e \"cx:458\"<\/span><\/li>\n<\/ol>\n<\/li>\n<li>Quando voc\u00ea conhece o <strong>no final <\/strong>META().id padr\u00e3o como abaixo\n<ol>\n<li><span class=\"theme:eclipse lang:mysql decode:true crayon-inline\">WHERE META().id LIKE \"cx:1%\"<\/span><\/li>\n<li>N\u00c3O use: COMO \"%:123\". Isso resultar\u00e1 em uma varredura completa<\/li>\n<\/ol>\n<\/li>\n<li>Quando voc\u00ea souber o META().id completo ou a lista de META().id, poder\u00e1 usar USE KEYS para buscar diretamente o documento sem consultar o \u00edndice prim\u00e1rio\n<ol>\n<li><span class=\"theme:eclipse lang:mysql decode:true crayon-inline\">FROM customer USE KEYS [\"cx:123\"]<\/span><\/li>\n<li><span class=\"theme:eclipse lang:mysql decode:true crayon-inline\">FROM customer USE KEYS [\"cx:123\", \"cx:359\", \"cx:948\"]<\/span><\/li>\n<li><span class=\"theme:eclipse lang:mysql decode:true crayon-inline\">FROM customer USE KEYS (SELECT raw docid FROM mylist WHERE zip = 94501)<\/span><\/li>\n<\/ol>\n<\/li>\n<\/ol>\n<h3><b>\u00cdndice prim\u00e1rio<\/b><\/h3>\n<p><span style=\"font-weight: 400\">criar o \u00edndice prim\u00e1rio em \"travel-sample\";<\/span><\/p>\n<p><span style=\"font-weight: 400\">O \u00edndice prim\u00e1rio \u00e9 simplesmente o \u00edndice da chave do documento em todo o bucket. A camada de dados do Couchbase imp\u00f5e a restri\u00e7\u00e3o de exclusividade na chave do documento. O \u00edndice prim\u00e1rio, como qualquer outro \u00edndice no Couchbase, \u00e9 mantido de forma ass\u00edncrona.  Voc\u00ea define a rec\u00eancia dos dados configurando o par\u00e2metro <\/span><a href=\"https:\/\/developer.couchbase.com\/documentation\/server\/current\/architecture\/querying-data-with-n1ql.html\"><span style=\"font-weight: 400\">n\u00edvel de consist\u00eancia<\/span><\/a><span style=\"font-weight: 400\"> para sua consulta.<\/span><\/p>\n<p><span style=\"font-weight: 400\">Aqui est\u00e3o os metadados desse \u00edndice:<\/span><\/p>\n<pre class=\"font-size:17 line-height:20 whitespace-before:01 whitespace-after:1 lang:default decode:true\">select * from system:indexes where name = '#primary';\r\n\"indexes\": {\r\n  \"datastore_id\": \"https:\/\/127.0.0.1:8091\",\r\n  \"id\": \"f6e3c75d6f396e7d\",\r\n  \"index_key\": [],\r\n  \"is_primary\": true,\r\n  \"keyspace_id\": \"travel-sample\",\r\n  \"name\": \"#primary\",\r\n  \"namespace_id\": \"default\",\r\n  \"state\" (estado): \"online\",\r\n  \"using\": \"gsi\"\r\n  }\r\n<\/pre>\n<p><span style=\"font-weight: 400\">Os metadados fornecem informa\u00e7\u00f5es adicionais sobre o \u00edndice: Onde o \u00edndice reside (datastore_id), seu estado (state) e o m\u00e9todo de indexa\u00e7\u00e3o (using).<\/span><br \/>\n<span style=\"font-weight: 400\">O \u00edndice prim\u00e1rio \u00e9 usado para varreduras completas do bucket (varreduras prim\u00e1rias) quando a consulta n\u00e3o tem nenhum filtro (predicado) ou nenhum outro \u00edndice ou caminho de acesso pode ser usado.   No Couchbase, voc\u00ea armazena v\u00e1rios espa\u00e7os-chave (documentos de um tipo diferente, cliente, pedidos, estoque etc.) em um \u00fanico bucket.   Portanto, quando voc\u00ea fizer a varredura prim\u00e1ria, a consulta usar\u00e1 o \u00edndice para obter as chaves do documento e buscar\u00e1 todos os documentos no bucket e, em seguida, aplicar\u00e1 o filtro.    Portanto, isso \u00e9 MUITO CARO.<\/span><\/p>\n<p><span style=\"font-weight: 400\">O design da chave do documento \u00e9 semelhante ao design da chave prim\u00e1ria com v\u00e1rias partes.<\/span><\/p>\n<p><span class=\"font-size:17 line-height:20 lang:mysql decode:true crayon-inline\">Sobrenome:nome:ID do cliente <\/span><\/p>\n<p><span class=\"font-size:17 line-height:20 lang:mysql decode:true crayon-inline\">Exemplo: smith:john:X1A1849 <\/span><\/p>\n<p><span style=\"font-weight: 400\">No Couchbase, \u00e9 uma pr\u00e1tica recomendada prefixar a chave com o tipo do documento.  Como esse \u00e9 um documento de cliente, vamos prefixar com CX.  Agora, a chave se torna:<\/span><\/p>\n<pre class=\"font-size:17 line-height:20 lang:mysql decode:true\">Exemplo: CX:smith:john:X1A1849\r\n<\/pre>\n<p><span style=\"font-weight: 400\">Portanto, no mesmo balde, haver\u00e1 outros tipos de documentos.<\/span><\/p>\n<pre class=\"font-size:17 line-height:20 lang:mysql decode:true\">Tipo de pedidos:  OD:US:CA:294829\r\n<\/pre>\n<pre class=\"font-size:17 line-height:20 lang:mysql decode:true\">Tipo de ITEMS:   IT:KD93823\r\n<\/pre>\n<p><span style=\"font-weight: 400\">Essas s\u00e3o apenas as pr\u00e1ticas recomendadas. N\u00e3o h\u00e1 restri\u00e7\u00f5es quanto ao formato ou \u00e0 estrutura da chave do documento no Couchbase, exceto o fato de que ela deve ser exclusiva em um bucket.<\/span><\/p>\n<p><span style=\"font-weight: 400\">Agora, se voc\u00ea tiver documentos com v\u00e1rias chaves e tiver um \u00edndice prim\u00e1rio, poder\u00e1 usar as seguintes consultas para obter efici\u00eancia.<\/span><\/p>\n<p><span style=\"font-weight: 400\">Exemplo 1:  Procurando uma chave de documento espec\u00edfica.<\/span><\/p>\n<pre class=\"font-size:17 line-height:20 whitespace-before:01 whitespace-after:01 lang:mysql decode:true\">SELECT * FROM sales WHERE META().id = \"CX:smith:john:X1A1849\";\r\n\r\n      {\r\n        \"#operator\": \"IndexScan2\",\r\n        \"index\": \"#primary\",\r\n        \"index_id\": \"4c92ab0bcca9690a\",\r\n        \"Espa\u00e7o-chave\": \"sales\",\r\n        \"namespace\": \"default\",\r\n        \"spans\": [\r\n          {\r\n            \"exact\": true,\r\n            \"range\" (intervalo): [\r\n              {\r\n                \"high\": \"\\\"CX:smith:john:X1A1849\\\"\",\r\n                \"inclusion\" (inclus\u00e3o): 3,\r\n                \"low\" (baixo): \"\\\"CX:smith:john:X1A1849\\\"\"\r\n              }\r\n            ]\r\n          }\r\n        ],\r\n<\/pre>\n<p><span style=\"font-weight: 400\">Se voc\u00ea souber a chave completa do documento, poder\u00e1 usar a instru\u00e7\u00e3o a seguir e evitar completamente o acesso ao \u00edndice.<\/span><\/p>\n<p><span class=\"theme:dark-terminal lang:default decode:true crayon-inline\">SELECT * FROM sales USE KEYS [\"CX:smith:john:X1A1849\"] <\/span><\/p>\n<p><span style=\"font-weight: 400\">\u00c9 poss\u00edvel obter mais de um documento em uma declara\u00e7\u00e3o.<\/span><\/p>\n<pre class=\"font-size:17 line-height:20 lang:mysql decode:true\">SELECT * FROM sales USE KEYS [\"CX:smith:john:X1A1849\", \"CX:smithjr:john:X2A1492\"]\r\n<\/pre>\n<p><b>Exemplo 2:<\/b><span style=\"font-weight: 400\"> \u00a0Procure um padr\u00e3o.  Obtenha TODOS os documentos do cliente.<\/span><\/p>\n<pre class=\"font-size:17 line-height:20 whitespace-before:01 whitespace-after:01 lang:mysql decode:true\">SELECT * FROM sales WHERE META().id LIKE \"CX:%\";\r\n      {\r\n        \"#operator\": \"IndexScan2\",\r\n        \"index\": \"#primary\",\r\n        \"index_id\": \"4c92ab0bcca9690a\",\r\n        \"Espa\u00e7o-chave\": \"sales\",\r\n        \"namespace\": \"default\",\r\n        \"spans\": [\r\n          {\r\n            \"exact\": true,\r\n            \"range\" (intervalo): [\r\n              {\r\n                \"high\": \"\\\"CX;\\\"\",\r\n                \"inclusion\" (inclus\u00e3o): 1,\r\n                \"low\" (baixo): \"\\\"CX:\\\"\"\r\n              }\r\n            ]\r\n          }\r\n        ],\r\n<\/pre>\n<p><b>Exemplo 3:<\/b><span style=\"font-weight: 400\"> \u00a0Obtenha todos os clientes com smith como sobrenome.<\/span><\/p>\n<p><span style=\"font-weight: 400\">A consulta a seguir usa o \u00edndice prim\u00e1rio de forma eficiente, buscando apenas os clientes com um intervalo espec\u00edfico.<\/span><span style=\"font-weight: 400\"> \u00a0<\/span><b>Observa\u00e7\u00e3o:<\/b><span style=\"font-weight: 400\"> Essa varredura diferencia mai\u00fasculas de min\u00fasculas.  Para fazer uma varredura sem distin\u00e7\u00e3o entre mai\u00fasculas e min\u00fasculas, voc\u00ea deve criar um \u00edndice secund\u00e1rio com UPPER() ou LOWER() da chave do documento.<\/span><\/p>\n<pre class=\"font-size:17 line-height:20 whitespace-before:01 whitespace-after:01 lang:mysql decode:true\">SELECT * FROM sales WHERE META().id LIKE \"CX:smith%\";\r\n\r\n      {\r\n        \"#operator\": \"IndexScan2\",\r\n        \"index\": \"#primary\",\r\n        \"index_id\": \"4c92ab0bcca9690a\",\r\n        \"Espa\u00e7o-chave\": \"sales\",\r\n        \"namespace\": \"default\",\r\n        \"spans\": [\r\n          {\r\n            \"exact\": true,\r\n            \"range\" (intervalo): [\r\n              {\r\n                \"high\": \"\\\"CX:smiti\\\"\",\r\n                \"inclusion\" (inclus\u00e3o): 1,\r\n                \"baixa\": \"\\\"CX:smith\\\"\"\r\n              }\r\n            ]\r\n          }\r\n        ],\r\n<\/pre>\n<p><b>Exemplo 4:<\/b><span style=\"font-weight: 400\"> \u00a0\u00c9 comum que alguns aplicativos usem o endere\u00e7o de e-mail como parte da chave do documento, pois eles s\u00e3o exclusivos. Nesse caso, voc\u00ea precisa descobrir todos os clientes com gmail.com.  Se esse for um requisito t\u00edpico, armazene o REVERSO do endere\u00e7o de e-mail como a chave e simplesmente fa\u00e7a a verifica\u00e7\u00e3o do padr\u00e3o de cadeia de caracteres principal.<\/span><\/p>\n<p><span class=\"font-size:17 line-height:20 lang:default decode:true crayon-inline\">Email:johnsmith@gmail.com; key: reverse(\"johnsmith@gmail.com\") =&gt; moc.liamg@htimsnhoj\u00a0<\/span><\/p>\n<p><span class=\"font-size:17 line-height:20 lang:default decode:true crayon-inline\">E-mail: janesnow@yahoo.com key: reverse(\"janesnow@yahoo.com\") =&gt; moc.oohay@wonsenaj<\/span><\/p>\n<pre class=\"font-size:17 line-height:20 whitespace-before:1 whitespace-after:1 lang:mysql decode:true\">SELECIONAR *\r\nFROM sales\r\nWHERE meta().id LIKE (reverse(\"@yahoo.com\") || \"%\");\r\n\r\n        \"#operator\": \"IndexScan2\",\r\n        \"index\": \"#primary\",\r\n        \"index_id\": \"4c92ab0bcca9690a\",\r\n        \"Espa\u00e7o-chave\": \"sales\",\r\n        \"namespace\": \"default\",\r\n        \"spans\": [\r\n          {\r\n            \"range\": [\r\n              {\r\n                \"alto\": \"\\\"moc.oohayA\\\"\",\r\n                \"inclusion\" (inclus\u00e3o): 1,\r\n                \"low\" (baixo): \"\\\"moc.oohay@\\\"\"\r\n              }\r\n            ]\r\n          }\r\n        ],\r\n<\/pre>\n<h3><b>\u00cdndice prim\u00e1rio nomeado<\/b><\/h3>\n<p><span style=\"font-weight: 400\">No Couchbase 5.0, voc\u00ea pode criar v\u00e1rias r\u00e9plicas de qualquer \u00edndice com um simples par\u00e2metro para CREATE INDEX.  A seguir, ser\u00e3o criadas 3 c\u00f3pias do \u00edndice e deve haver no m\u00ednimo 3 n\u00f3s de \u00edndice no cluster.<\/span><\/p>\n<pre class=\"font-size:17 line-height:20 lang:mysql decode:true\">CREATE PRIMARY INDEX ON 'travel-sample' WITH {\"num_replica\":2};\r\nCREATE PRIMARY INDEX `def_primary` ON `travel-sample` ;<\/pre>\n<p><span style=\"font-weight: 400\">Voc\u00ea tamb\u00e9m pode nomear o \u00edndice prim\u00e1rio. O restante dos recursos do \u00edndice prim\u00e1rio \u00e9 o mesmo, exceto o nome do \u00edndice. Um bom efeito colateral disso \u00e9 que voc\u00ea pode ter v\u00e1rios \u00edndices prim\u00e1rios nas vers\u00f5es do Couchbase anteriores \u00e0 5.0 usando nomes diferentes. Os \u00edndices duplicados ajudam na alta disponibilidade, bem como na distribui\u00e7\u00e3o da carga de consulta entre eles.  Isso \u00e9 v\u00e1lido tanto para \u00edndices prim\u00e1rios quanto para \u00edndices secund\u00e1rios.<\/span><\/p>\n<pre class=\"font-size:17 line-height:20 whitespace-before:1 whitespace-after:01 lang:mysql decode:true\">select meta().id as documentkey, `travel-sample` airline\r\nfrom `travel-sample`\r\nwhere type = 'airline' limit 1;\r\n{\r\n  \"airline\": {\r\n    \"indicativo\": \"MILE-AIR\",\r\n    \"country\" (pa\u00eds): \"United States\" (Estados Unidos),\r\n    \"iata\": \"Q5\",\r\n    \"icao\": \"MLA\",\r\n    \"id\": 10,\r\n    \"name\": \"40-Mile Air\",\r\n    \"type\" (tipo): \"airline\"\r\n  },\r\n  \"documentkey\": \"airline_10\"\r\n}\r\n<\/pre>\n<p>Por fim, no Couchbase 6.5, introduzimos o consultor de \u00edndice.  Ele pode analisar uma \u00fanica instru\u00e7\u00e3o N1QL ou carga de trabalho.  Leia os detalhes em:<\/p>\n<ol>\n<li><a href=\"https:\/\/www.couchbase.com\/blog\/pt\/n1ql-index-advisor-improve-query-performance-and-productivity\/\">N1QL Index Advisor: Melhore o desempenho e a produtividade das consultas<\/a><\/li>\n<li><a href=\"https:\/\/www.couchbase.com\/blog\/pt\/index-advisor-for-n1ql-query-statement\/\">Index Advisor para declara\u00e7\u00e3o de consulta N1QL<\/a><\/li>\n<li><a href=\"https:\/\/www.couchbase.com\/blog\/pt\/index-advisor-for-query-workload\/\">Consultor de \u00edndice para carga de trabalho de consulta<\/a><\/li>\n<\/ol>\n<p>Esse consultor de \u00edndices s\u00f3 aconselha \u00edndices secund\u00e1rios adequados e nunca um \u00edndice prim\u00e1rio.  Se voc\u00ea leu o artigo at\u00e9 agora, sabe por qu\u00ea! <a href=\"https:\/\/www.couchbase.com\/blog\/pt\/downloads\/?family=server&amp;product=couchbase-server-developer\">Fa\u00e7a o download do Couchbase 6.5<\/a> e experimente todos os novos recursos!<\/p>","protected":false},"excerpt":{"rendered":"<p>Algumas perguntas frequentes sobre o N1QL para servi\u00e7o de consulta: Quando realmente usamos um \u00edndice prim\u00e1rio? Por que o consultor de \u00edndices n\u00e3o recomenda o \u00edndice prim\u00e1rio quando essa pode ser a \u00fanica op\u00e7\u00e3o? Continue lendo... O Couchbase \u00e9 um [...]<\/p>","protected":false},"author":55,"featured_media":11848,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_acf_changed":false,"inline_featured_image":false,"footnotes":""},"categories":[9417,9381,1812],"tags":[1505,1506],"ppma_author":[8929],"class_list":["post-7277","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-performance","category-indexing","category-n1ql-query","tag-index","tag-tuning"],"acf":[],"yoast_head":"<!-- This site is optimized with the Yoast SEO Premium plugin v26.4 (Yoast SEO v26.4) - https:\/\/yoast.com\/wordpress\/plugins\/seo\/ -->\n<title>What is the Couchbase Primary Index? Learn Primary Uses<\/title>\n<meta name=\"description\" content=\"What is the Couchbase Primary Index? The primary index scan provides you with the \u201cfull table scan\u201d equivalent for all the documents from start to finish.\" \/>\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\/primary-uses-for-couchbase-primary-index\/\" \/>\n<meta property=\"og:locale\" content=\"pt_BR\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Primary Uses for Couchbase Primary Index\" \/>\n<meta property=\"og:description\" content=\"What is the Couchbase Primary Index? The primary index scan provides you with the \u201cfull table scan\u201d equivalent for all the documents from start to finish.\" \/>\n<meta property=\"og:url\" content=\"https:\/\/www.couchbase.com\/blog\/pt\/primary-uses-for-couchbase-primary-index\/\" \/>\n<meta property=\"og:site_name\" content=\"The Couchbase Blog\" \/>\n<meta property=\"article:published_time\" content=\"2019-08-23T00:42:26+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2025-06-14T03:19:35+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2019\/08\/Couchbase-primary-index-gsi-global-secondary-index.png\" \/>\n\t<meta property=\"og:image:width\" content=\"1200\" \/>\n\t<meta property=\"og:image:height\" content=\"882\" \/>\n\t<meta property=\"og:image:type\" content=\"image\/png\" \/>\n<meta name=\"author\" content=\"Keshav Murthy\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:creator\" content=\"@rkeshavmurthy\" \/>\n<meta name=\"twitter:label1\" content=\"Written by\" \/>\n\t<meta name=\"twitter:data1\" content=\"Keshav Murthy\" \/>\n\t<meta name=\"twitter:label2\" content=\"Est. reading time\" \/>\n\t<meta name=\"twitter:data2\" content=\"7 minutos\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\/\/www.couchbase.com\/blog\/primary-uses-for-couchbase-primary-index\/#article\",\"isPartOf\":{\"@id\":\"https:\/\/www.couchbase.com\/blog\/primary-uses-for-couchbase-primary-index\/\"},\"author\":{\"name\":\"Keshav Murthy\",\"@id\":\"https:\/\/www.couchbase.com\/blog\/#\/schema\/person\/c261644262bf98e146372fe647682636\"},\"headline\":\"Primary Uses for Couchbase Primary Index\",\"datePublished\":\"2019-08-23T00:42:26+00:00\",\"dateModified\":\"2025-06-14T03:19:35+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\/\/www.couchbase.com\/blog\/primary-uses-for-couchbase-primary-index\/\"},\"wordCount\":1138,\"commentCount\":2,\"publisher\":{\"@id\":\"https:\/\/www.couchbase.com\/blog\/#organization\"},\"image\":{\"@id\":\"https:\/\/www.couchbase.com\/blog\/primary-uses-for-couchbase-primary-index\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2019\/08\/Couchbase-primary-index-gsi-global-secondary-index.png\",\"keywords\":[\"Index\",\"Tuning\"],\"articleSection\":[\"High Performance\",\"Indexing\",\"SQL++ \/ N1QL Query\"],\"inLanguage\":\"pt-BR\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\/\/www.couchbase.com\/blog\/primary-uses-for-couchbase-primary-index\/#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\/\/www.couchbase.com\/blog\/primary-uses-for-couchbase-primary-index\/\",\"url\":\"https:\/\/www.couchbase.com\/blog\/primary-uses-for-couchbase-primary-index\/\",\"name\":\"What is the Couchbase Primary Index? Learn Primary Uses\",\"isPartOf\":{\"@id\":\"https:\/\/www.couchbase.com\/blog\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\/\/www.couchbase.com\/blog\/primary-uses-for-couchbase-primary-index\/#primaryimage\"},\"image\":{\"@id\":\"https:\/\/www.couchbase.com\/blog\/primary-uses-for-couchbase-primary-index\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2019\/08\/Couchbase-primary-index-gsi-global-secondary-index.png\",\"datePublished\":\"2019-08-23T00:42:26+00:00\",\"dateModified\":\"2025-06-14T03:19:35+00:00\",\"description\":\"What is the Couchbase Primary Index? The primary index scan provides you with the \u201cfull table scan\u201d equivalent for all the documents from start to finish.\",\"breadcrumb\":{\"@id\":\"https:\/\/www.couchbase.com\/blog\/primary-uses-for-couchbase-primary-index\/#breadcrumb\"},\"inLanguage\":\"pt-BR\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/www.couchbase.com\/blog\/primary-uses-for-couchbase-primary-index\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"pt-BR\",\"@id\":\"https:\/\/www.couchbase.com\/blog\/primary-uses-for-couchbase-primary-index\/#primaryimage\",\"url\":\"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2019\/08\/Couchbase-primary-index-gsi-global-secondary-index.png\",\"contentUrl\":\"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2019\/08\/Couchbase-primary-index-gsi-global-secondary-index.png\",\"width\":1200,\"height\":882},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/www.couchbase.com\/blog\/primary-uses-for-couchbase-primary-index\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\/\/www.couchbase.com\/blog\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Primary Uses for Couchbase Primary Index\"}]},{\"@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\/c261644262bf98e146372fe647682636\",\"name\":\"Keshav Murthy\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"pt-BR\",\"@id\":\"https:\/\/www.couchbase.com\/blog\/#\/schema\/person\/image\/4e51d72fc07c662aa791316deafffac4\",\"url\":\"https:\/\/secure.gravatar.com\/avatar\/af74df754db27152971d0aed2f323ead5a1f9fe5afd0209af91e12e784451224?s=96&d=mm&r=g\",\"contentUrl\":\"https:\/\/secure.gravatar.com\/avatar\/af74df754db27152971d0aed2f323ead5a1f9fe5afd0209af91e12e784451224?s=96&d=mm&r=g\",\"caption\":\"Keshav Murthy\"},\"description\":\"Keshav Murthy is a Vice President at Couchbase R&amp;D. Previously, he was at MapR, IBM, Informix, Sybase, with more than 20 years of experience in database design &amp; development. He lead the SQL and NoSQL R&amp;D team at IBM Informix. He has received two President's Club awards at Couchbase, two Outstanding Technical Achievement Awards at IBM. Keshav has a bachelor's degree in Computer Science and Engineering from the University of Mysore, India, and has received twenty four US patents.\",\"sameAs\":[\"https:\/\/blog.planetnosql.com\/\",\"https:\/\/x.com\/rkeshavmurthy\"],\"url\":\"https:\/\/www.couchbase.com\/blog\/pt\/author\/keshav-murthy\/\"}]}<\/script>\n<!-- \/ Yoast SEO Premium plugin. -->","yoast_head_json":{"title":"O que \u00e9 o \u00edndice prim\u00e1rio do Couchbase? Aprenda os usos do Primary","description":"O que \u00e9 o \u00edndice prim\u00e1rio do Couchbase? A varredura do \u00edndice prim\u00e1rio fornece a voc\u00ea o equivalente \u00e0 \"varredura de tabela completa\" para todos os documentos, do in\u00edcio ao fim.","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\/primary-uses-for-couchbase-primary-index\/","og_locale":"pt_BR","og_type":"article","og_title":"Primary Uses for Couchbase Primary Index","og_description":"What is the Couchbase Primary Index? The primary index scan provides you with the \u201cfull table scan\u201d equivalent for all the documents from start to finish.","og_url":"https:\/\/www.couchbase.com\/blog\/pt\/primary-uses-for-couchbase-primary-index\/","og_site_name":"The Couchbase Blog","article_published_time":"2019-08-23T00:42:26+00:00","article_modified_time":"2025-06-14T03:19:35+00:00","og_image":[{"width":1200,"height":882,"url":"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2019\/08\/Couchbase-primary-index-gsi-global-secondary-index.png","type":"image\/png"}],"author":"Keshav Murthy","twitter_card":"summary_large_image","twitter_creator":"@rkeshavmurthy","twitter_misc":{"Written by":"Keshav Murthy","Est. reading time":"7 minutos"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/www.couchbase.com\/blog\/primary-uses-for-couchbase-primary-index\/#article","isPartOf":{"@id":"https:\/\/www.couchbase.com\/blog\/primary-uses-for-couchbase-primary-index\/"},"author":{"name":"Keshav Murthy","@id":"https:\/\/www.couchbase.com\/blog\/#\/schema\/person\/c261644262bf98e146372fe647682636"},"headline":"Primary Uses for Couchbase Primary Index","datePublished":"2019-08-23T00:42:26+00:00","dateModified":"2025-06-14T03:19:35+00:00","mainEntityOfPage":{"@id":"https:\/\/www.couchbase.com\/blog\/primary-uses-for-couchbase-primary-index\/"},"wordCount":1138,"commentCount":2,"publisher":{"@id":"https:\/\/www.couchbase.com\/blog\/#organization"},"image":{"@id":"https:\/\/www.couchbase.com\/blog\/primary-uses-for-couchbase-primary-index\/#primaryimage"},"thumbnailUrl":"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2019\/08\/Couchbase-primary-index-gsi-global-secondary-index.png","keywords":["Index","Tuning"],"articleSection":["High Performance","Indexing","SQL++ \/ N1QL Query"],"inLanguage":"pt-BR","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/www.couchbase.com\/blog\/primary-uses-for-couchbase-primary-index\/#respond"]}]},{"@type":"WebPage","@id":"https:\/\/www.couchbase.com\/blog\/primary-uses-for-couchbase-primary-index\/","url":"https:\/\/www.couchbase.com\/blog\/primary-uses-for-couchbase-primary-index\/","name":"O que \u00e9 o \u00edndice prim\u00e1rio do Couchbase? Aprenda os usos do Primary","isPartOf":{"@id":"https:\/\/www.couchbase.com\/blog\/#website"},"primaryImageOfPage":{"@id":"https:\/\/www.couchbase.com\/blog\/primary-uses-for-couchbase-primary-index\/#primaryimage"},"image":{"@id":"https:\/\/www.couchbase.com\/blog\/primary-uses-for-couchbase-primary-index\/#primaryimage"},"thumbnailUrl":"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2019\/08\/Couchbase-primary-index-gsi-global-secondary-index.png","datePublished":"2019-08-23T00:42:26+00:00","dateModified":"2025-06-14T03:19:35+00:00","description":"O que \u00e9 o \u00edndice prim\u00e1rio do Couchbase? A varredura do \u00edndice prim\u00e1rio fornece a voc\u00ea o equivalente \u00e0 \"varredura de tabela completa\" para todos os documentos, do in\u00edcio ao fim.","breadcrumb":{"@id":"https:\/\/www.couchbase.com\/blog\/primary-uses-for-couchbase-primary-index\/#breadcrumb"},"inLanguage":"pt-BR","potentialAction":[{"@type":"ReadAction","target":["https:\/\/www.couchbase.com\/blog\/primary-uses-for-couchbase-primary-index\/"]}]},{"@type":"ImageObject","inLanguage":"pt-BR","@id":"https:\/\/www.couchbase.com\/blog\/primary-uses-for-couchbase-primary-index\/#primaryimage","url":"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2019\/08\/Couchbase-primary-index-gsi-global-secondary-index.png","contentUrl":"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2019\/08\/Couchbase-primary-index-gsi-global-secondary-index.png","width":1200,"height":882},{"@type":"BreadcrumbList","@id":"https:\/\/www.couchbase.com\/blog\/primary-uses-for-couchbase-primary-index\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/www.couchbase.com\/blog\/"},{"@type":"ListItem","position":2,"name":"Primary Uses for Couchbase Primary Index"}]},{"@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\/c261644262bf98e146372fe647682636","name":"Keshav Murthy","image":{"@type":"ImageObject","inLanguage":"pt-BR","@id":"https:\/\/www.couchbase.com\/blog\/#\/schema\/person\/image\/4e51d72fc07c662aa791316deafffac4","url":"https:\/\/secure.gravatar.com\/avatar\/af74df754db27152971d0aed2f323ead5a1f9fe5afd0209af91e12e784451224?s=96&d=mm&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/af74df754db27152971d0aed2f323ead5a1f9fe5afd0209af91e12e784451224?s=96&d=mm&r=g","caption":"Keshav Murthy"},"description":"Keshav Murthy is a Vice President at Couchbase R&amp;D. Previously, he was at MapR, IBM, Informix, Sybase, with more than 20 years of experience in database design &amp; development. He lead the SQL and NoSQL R&amp;D team at IBM Informix. He has received two President's Club awards at Couchbase, two Outstanding Technical Achievement Awards at IBM. Keshav has a bachelor's degree in Computer Science and Engineering from the University of Mysore, India, and has received twenty four US patents.","sameAs":["https:\/\/blog.planetnosql.com\/","https:\/\/x.com\/rkeshavmurthy"],"url":"https:\/\/www.couchbase.com\/blog\/pt\/author\/keshav-murthy\/"}]}},"authors":[{"term_id":8929,"user_id":55,"is_guest":0,"slug":"keshav-murthy","display_name":"Keshav Murthy","avatar_url":"https:\/\/secure.gravatar.com\/avatar\/af74df754db27152971d0aed2f323ead5a1f9fe5afd0209af91e12e784451224?s=96&d=mm&r=g","author_category":"","last_name":"Murthy","first_name":"Keshav","job_title":"","user_url":"https:\/\/blog.planetnosql.com\/","description":"Keshav Murthy \u00e9 vice-presidente de P&amp;D da Couchbase. Anteriormente, ele trabalhou na MapR, IBM, Informix e Sybase, com mais de 20 anos de experi\u00eancia em design e desenvolvimento de bancos de dados. Ele liderou a equipe de P&amp;D de SQL e NoSQL na IBM Informix. Recebeu dois pr\u00eamios President's Club na Couchbase e dois Outstanding Technical Achievement Awards na IBM. Keshav \u00e9 bacharel em Ci\u00eancia da Computa\u00e7\u00e3o e Engenharia pela Universidade de Mysore, \u00cdndia, det\u00e9m dez patentes nos EUA e tem tr\u00eas patentes pendentes nos EUA."}],"_links":{"self":[{"href":"https:\/\/www.couchbase.com\/blog\/pt\/wp-json\/wp\/v2\/posts\/7277","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\/55"}],"replies":[{"embeddable":true,"href":"https:\/\/www.couchbase.com\/blog\/pt\/wp-json\/wp\/v2\/comments?post=7277"}],"version-history":[{"count":0,"href":"https:\/\/www.couchbase.com\/blog\/pt\/wp-json\/wp\/v2\/posts\/7277\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.couchbase.com\/blog\/pt\/wp-json\/wp\/v2\/media\/11848"}],"wp:attachment":[{"href":"https:\/\/www.couchbase.com\/blog\/pt\/wp-json\/wp\/v2\/media?parent=7277"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.couchbase.com\/blog\/pt\/wp-json\/wp\/v2\/categories?post=7277"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.couchbase.com\/blog\/pt\/wp-json\/wp\/v2\/tags?post=7277"},{"taxonomy":"author","embeddable":true,"href":"https:\/\/www.couchbase.com\/blog\/pt\/wp-json\/wp\/v2\/ppma_author?post=7277"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}