{"id":8187,"date":"2020-02-12T10:43:00","date_gmt":"2020-02-12T18:43:00","guid":{"rendered":"https:\/\/www.couchbase.com\/blog\/?p=8187"},"modified":"2025-06-13T17:21:50","modified_gmt":"2025-06-14T00:21:50","slug":"index-advisor-service-for-couchbase-n1qlfeb-refresh","status":"publish","type":"post","link":"https:\/\/www.couchbase.com\/blog\/index-advisor-service-for-couchbase-n1qlfeb-refresh\/","title":{"rendered":"Index Advisor Service for Couchbase N1QL(Feb refresh)"},"content":{"rendered":"<p>This is our Feb drop for <a href=\"https:\/\/index-advisor.couchbase.com\/\">Index Advisor service<\/a> after fixing some of the bugs that were found. We plan to keep improvising the Index Advisor service(<a href=\"https:\/\/www.couchbase.com\/blog\/index-advisor-service\/\">What is it?<\/a>). The fixes in Index Advisor that you would normally see in the next maintenance release will now be available to you every month.<\/p>\n<h4>Who is it for? and When should you use it?<\/h4>\n<p><a href=\"https:\/\/index-advisor.couchbase.com\/\">https:\/\/index-advisor.couchbase.com\/<\/a><\/p>\n<p>At the cost of repeating myself,<\/p>\n<p>This service will provide index recommendations to help DBAs, developers, and architects optimize query performance and meet the SLAs.<\/p>\n<p>You will find this service useful if you:<\/p>\n<ol>\n<li>Want to avoid reading the <a href=\"https:\/\/docs.couchbase.com\/server\/current\/n1ql\/n1ql-language-reference\/createindex.html\">index creation<\/a>\u00a0<a href=\"https:\/\/www.couchbase.com\/blog\/create-right-index-get-right-performance\/\">rules<\/a>, understand them, and implement them to find the appropriate indexes for your query\/queries\/workload.<\/li>\n<li>\u00a0Do not want to download the latest Couchbase 6.5 server yet.<\/li>\n<li>\u00a0Are using an\u00a0<strong>older Couchbase version(version 5.5,6.0)<\/strong>\u00a0and need help creating the right indexes for your queries.<\/li>\n<li>Want to generate advice for indexes\u00a0<strong>without creating a bucket<\/strong> or uploading the schema or data.<\/li>\n<\/ol>\n<h4>Whats new?<\/h4>\n<p>Even if you have the Couchbase Server 6.5 server downloaded and can use Index Advisor from Query Workbench, this index Advisor is a more recent version(without a great looking UI) but with the following defects fixed.<\/p>\n<p id=\"summary-val\"><span style=\"color: #00ccff\">1. Index advise on virtual keyspace<\/span><\/p>\n<p><span style=\"color: #00ccff\">2. Index Advisor to support virtual keyspace for delete\/merge\/update statement<\/span><\/p>\n<p>With both these fixes, a query like<\/p>\n<pre class=\"lang:default decode:true\">advise delete FROM aa where type=\"beer\" ;<\/pre>\n<p>that used to give<\/p>\n<pre class=\"lang:default decode:true\"><span style=\"color: #ff0000\">[\r\n  {\r\n    \"#operator\": \"Advise\",\r\n    \"advice\": {\r\n      \"#operator\": \"IndexAdvice\",\r\n      \"adviseinfo\": []\r\n    },\r\n    \"query\": \"delete FROM aa where type=\\\"beer\\\" ;\"\r\n  }\r\n]<\/span><\/pre>\n<p>now gives<\/p>\n<pre class=\"lang:default decode:true\">{\r\n  \"results\": [\r\n    {\r\n      \"#operator\": \"Advise\",\r\n      \"advice\": {\r\n        \"#operator\": \"IndexAdvice\",\r\n        \"adviseinfo\": {\r\n          \"recommended_indexes\": {\r\n            \"covering_indexes\": [\r\n              {\r\n                \"index_statement\": \"CREATE INDEX adv_type ON `aa`(`type`)\",\r\n                \"keyspace_alias\": \"aa\"\r\n              }\r\n            ],\r\n            \"indexes\": [\r\n              {\r\n                \"index_statement\": \"CREATE INDEX adv_type ON `aa`(`type`)\",\r\n                \"keyspace_alias\": \"aa\",\r\n                \"recommending_rule\": \"Index keys follow order of predicate types: 2. equality\/null\/missing.\"\r\n              }\r\n            ]\r\n          }\r\n        }\r\n      },\r\n      \"query\": \"delete FROM aa where type=\\\"beer\\\" ;\"\r\n    }\r\n  ]\r\n}<\/pre>\n<p><span style=\"color: #00ccff\">3. Index Advisor to remove identifier in Meta() expression<\/span><\/p>\n<p>For a query like:<\/p>\n<pre class=\"lang:default decode:true \">SELECT * FROM `beer-sample` d where SPLIT(meta(d).id, \":\")[0] like \"%cafe\"<\/pre>\n<p>we would get<\/p>\n<pre class=\"lang:default decode:true\"><span style=\"color: #ff0000\">{\r\n  \"adviseResult\": [\r\n    {\r\n      \"current_indexes\": [\r\n        {\r\n          \"index_statement\": \"CREATE PRIMARY INDEX beer_primary ON `beer-sample`\",\r\n          \"keyspace_alias\": \"beer-sample_d\"\r\n        }\r\n      ],\r\n      \"recommended_indexes\": {\r\n        \"indexes\": [\r\n          {\r\n            \"index_statement\": \"CREATE INDEX adv_split_meta_d_id_0 ON `beer-sample`(split((meta(`d`).`id`), ':')[0])\",\r\n            \"keyspace_alias\": \"beer-sample_d\",\r\n            \"recommending_rule\": \"Index keys follow order of predicate types: 9. function index.\"\r\n          }\r\n        ]\r\n      }\r\n    }\r\n  ]\r\n}<\/span><\/pre>\n<p>Now we have modified that to:<\/p>\n<pre class=\"lang:default decode:true\">{\r\n  \"results\": [\r\n    {\r\n      \"#operator\": \"Advise\",\r\n      \"advice\": {\r\n        \"#operator\": \"IndexAdvice\",\r\n        \"adviseinfo\": {\r\n          \"recommended_indexes\": {\r\n            \"indexes\": [\r\n              {\r\n                \"index_statement\": \"CREATE INDEX adv_split_meta_self_id_0 ON `beer-sample`(split((<span style=\"color: #3366ff\">meta(`self`)<\/span>.`id`), ':')[0])\",\r\n                \"keyspace_alias\": \"beer-sample_d\",\r\n                \"recommending_rule\": \"Index keys follow order of predicate types: 9. like.\"\r\n              }\r\n            ]\r\n          }\r\n        }\r\n      },\r\n      \"query\": \"SELECT * FROM `beer-sample` d where SPLIT(meta(d).id, \\\":\\\")[0] like \\\"%cafe\\\"\"\r\n    }\r\n  ]\r\n}<\/pre>\n<p>for better usage.<\/p>\n<p><span style=\"color: #00ccff\">4. Query: Advise function confusing message<\/span><\/p>\n<p>A bunch of confusing error messages have been replaced by more verbose and clear explanations.<\/p>\n<p><span style=\"color: #00ccff\">5. Using advise on a query that has USE index keyword returns incorrect error<\/span><\/p>\n<pre class=\"lang:default decode:true\">advise select id,url,address,title,city,name,country,public_likes from bucket0 <strong>use index (def_primary)<\/strong> where some p in public_likes satisfies p like \"Ge%\" END AND type = \"hotel\" order by id, url, address, title, city DESC, name, country<\/pre>\n<p>used to give<\/p>\n<pre class=\"lang:default decode:true\"><span style=\"color: #ff0000\">[\r\n  {\r\n    \"#operator\": \"Advise\",\r\n    \"advice\": {\r\n      \"#operator\": \"IndexAdvice\",\r\n      \"adviseinfo\": [\r\n        {\r\n          \"recommended_indexes\": \"No index recommendation at this time: no keyspace found.\"\r\n        }\r\n      ]\r\n    },\r\n    \"query\": \"select id,url,address,title,city,name,country,public_likes from bucket0 use index (def_primary) where some p in public_likes satisfies p like \\\"Ge%\\\" END AND type = \\\"hotel\\\" order by id, url, address, title, city DESC, name, country\"\r\n  }\r\n]<\/span><\/pre>\n<p>now gives<\/p>\n<pre class=\"lang:default decode:true \">{\r\n  \"results\": [\r\n    {\r\n      \"#operator\": \"Advise\",\r\n      \"advice\": {\r\n        \"#operator\": \"IndexAdvice\",\r\n        \"adviseinfo\": {\r\n          \"recommended_indexes\": {\r\n            \"covering_indexes\": [\r\n              {\r\n                \"index_statement\": \"CREATE INDEX adv_type_DISTINCT_public_likes_id_url_city_name_title_address_country_public_likes ON `bucket0`(`type`,DISTINCT ARRAY `p` FOR p in `public_likes` END,`id`,`url`,`city`,`name`,`title`,`address`,`country`,`public_likes`)\",\r\n                \"keyspace_alias\": \"bucket0\"\r\n              }\r\n            ],\r\n            \"indexes\": [\r\n              {\r\n                \"index_statement\": \"CREATE INDEX adv_type_DISTINCT_public_likes ON `bucket0`(`type`,DISTINCT ARRAY `p` FOR p in `public_likes` END)\",\r\n                \"keyspace_alias\": \"bucket0\",\r\n                \"recommending_rule\": \"Index keys follow order of predicate types: 2. equality\/null\/missing, 6. array predicate.\"\r\n              }\r\n            ]\r\n          }\r\n        }\r\n      },\r\n      \"query\": \"select id,url,address,title,city,name,country,public_likes from bucket0 use index (def_primary) where some p in public_likes satisfies p like \\\"Ge%\\\" END AND type = \\\"hotel\\\" order by id, url, address, title, city DESC, name, country\"\r\n    }\r\n  ]\r\n}<\/pre>\n<p>Some more smaller enhancements have been added as well.<\/p>\n<p>Give it a try and any problems you see with Indexes recommended by Index Advisor Service, you can add them as a comment to this blog<\/p>\n<h4>More about the Index Advisor feature:<\/h4>\n<p><a href=\"https:\/\/www.couchbase.com\/blog\/index-advisor-service\/\">https:\/\/www.couchbase.com\/blog\/index-advisor-service\/<\/a><\/p>\n<p><a href=\"https:\/\/www.couchbase.com\/blog\/n1ql-index-advisor-improve-query-performance-and-productivity\/\">https:\/\/www.couchbase.com\/blog\/n1ql-index-advisor-improve-query-performance-and-productivity\/<\/a><\/p>\n<p><a href=\"https:\/\/www.couchbase.com\/blog\/index-advisor-for-query-workload\/\">https:\/\/www.couchbase.com\/blog\/index-advisor-for-query-workload\/<\/a><\/p>\n<p><a href=\"https:\/\/docs.couchbase.com\/server\/6.5\/n1ql\/n1ql-language-reference\/advise.html\">https:\/\/docs.couchbase.com\/server\/6.5\/n1ql\/n1ql-language-reference\/advise.html<\/a><\/p>\n<p><a href=\"https:\/\/docs.couchbase.com\/server\/6.5\/n1ql\/n1ql-language-reference\/advisor.html\">https:\/\/docs.couchbase.com\/server\/6.5\/n1ql\/n1ql-language-reference\/advisor.html<\/a><\/p>\n<p><a href=\"https:\/\/docs.couchbase.com\/server\/6.5\/tools\/query-workbench.html#index-advisor\">https:\/\/docs.couchbase.com\/server\/6.5\/tools\/query-workbench.html#index-advisor<\/a><\/p>\n<h4><\/h4>\n","protected":false},"excerpt":{"rendered":"<p>This is our Feb drop for Index Advisor service after fixing some of the bugs that were found. We plan to keep improvising the Index Advisor service(What is it?). The fixes in Index Advisor that you would normally see in [&hellip;]<\/p>\n","protected":false},"author":50908,"featured_media":2560,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_acf_changed":false,"inline_featured_image":false,"footnotes":""},"categories":[2225,1816,2453,1812],"tags":[2439,2440,2445,2444],"ppma_author":[9099],"class_list":["post-8187","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-cloud","category-couchbase-server","category-global-secondary-index","category-n1ql-query","tag-index-advisor","tag-indexes","tag-query-optimization","tag-secondary-indexes"],"acf":[],"yoast_head":"<!-- This site is optimized with the Yoast SEO Premium plugin v26.0 (Yoast SEO v26.0) - https:\/\/yoast.com\/wordpress\/plugins\/seo\/ -->\n<title>Index Advisor Service for Couchbase N1QL(Feb refresh) - The Couchbase Blog<\/title>\n<meta name=\"description\" content=\"Follow-up blog for recent defects fixed in Couchbase Index advisor provides secondary index recommendations for SQL-like queries on JSON documents to improve query performance.\" \/>\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\/index-advisor-service-for-couchbase-n1qlfeb-refresh\/\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Index Advisor Service for Couchbase N1QL(Feb refresh)\" \/>\n<meta property=\"og:description\" content=\"Follow-up blog for recent defects fixed in Couchbase Index advisor provides secondary index recommendations for SQL-like queries on JSON documents to improve query performance.\" \/>\n<meta property=\"og:url\" content=\"https:\/\/www.couchbase.com\/blog\/index-advisor-service-for-couchbase-n1qlfeb-refresh\/\" \/>\n<meta property=\"og:site_name\" content=\"The Couchbase Blog\" \/>\n<meta property=\"article:published_time\" content=\"2020-02-12T18:43:00+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2025-06-14T00:21:50+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2017\/02\/n1ql.png\" \/>\n\t<meta property=\"og:image:width\" content=\"512\" \/>\n\t<meta property=\"og:image:height\" content=\"512\" \/>\n\t<meta property=\"og:image:type\" content=\"image\/png\" \/>\n<meta name=\"author\" content=\"Kamini Jagtiani\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:label1\" content=\"Written by\" \/>\n\t<meta name=\"twitter:data1\" content=\"Kamini Jagtiani\" \/>\n\t<meta name=\"twitter:label2\" content=\"Est. reading time\" \/>\n\t<meta name=\"twitter:data2\" content=\"4 minutes\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\/\/www.couchbase.com\/blog\/index-advisor-service-for-couchbase-n1qlfeb-refresh\/#article\",\"isPartOf\":{\"@id\":\"https:\/\/www.couchbase.com\/blog\/index-advisor-service-for-couchbase-n1qlfeb-refresh\/\"},\"author\":{\"name\":\"Kamini Jagtiani\",\"@id\":\"https:\/\/www.couchbase.com\/blog\/#\/schema\/person\/f99c5767a877147f9cf658230bc2473b\"},\"headline\":\"Index Advisor Service for Couchbase N1QL(Feb refresh)\",\"datePublished\":\"2020-02-12T18:43:00+00:00\",\"dateModified\":\"2025-06-14T00:21:50+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\/\/www.couchbase.com\/blog\/index-advisor-service-for-couchbase-n1qlfeb-refresh\/\"},\"wordCount\":395,\"commentCount\":0,\"publisher\":{\"@id\":\"https:\/\/www.couchbase.com\/blog\/#organization\"},\"image\":{\"@id\":\"https:\/\/www.couchbase.com\/blog\/index-advisor-service-for-couchbase-n1qlfeb-refresh\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2017\/02\/n1ql.png\",\"keywords\":[\"Index Advisor\",\"Indexes\",\"Query optimization\",\"Secondary indexes\"],\"articleSection\":[\"Couchbase Capella\",\"Couchbase Server\",\"Global Secondary Index\",\"SQL++ \/ N1QL Query\"],\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\/\/www.couchbase.com\/blog\/index-advisor-service-for-couchbase-n1qlfeb-refresh\/#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\/\/www.couchbase.com\/blog\/index-advisor-service-for-couchbase-n1qlfeb-refresh\/\",\"url\":\"https:\/\/www.couchbase.com\/blog\/index-advisor-service-for-couchbase-n1qlfeb-refresh\/\",\"name\":\"Index Advisor Service for Couchbase N1QL(Feb refresh) - The Couchbase Blog\",\"isPartOf\":{\"@id\":\"https:\/\/www.couchbase.com\/blog\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\/\/www.couchbase.com\/blog\/index-advisor-service-for-couchbase-n1qlfeb-refresh\/#primaryimage\"},\"image\":{\"@id\":\"https:\/\/www.couchbase.com\/blog\/index-advisor-service-for-couchbase-n1qlfeb-refresh\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2017\/02\/n1ql.png\",\"datePublished\":\"2020-02-12T18:43:00+00:00\",\"dateModified\":\"2025-06-14T00:21:50+00:00\",\"description\":\"Follow-up blog for recent defects fixed in Couchbase Index advisor provides secondary index recommendations for SQL-like queries on JSON documents to improve query performance.\",\"breadcrumb\":{\"@id\":\"https:\/\/www.couchbase.com\/blog\/index-advisor-service-for-couchbase-n1qlfeb-refresh\/#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/www.couchbase.com\/blog\/index-advisor-service-for-couchbase-n1qlfeb-refresh\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/www.couchbase.com\/blog\/index-advisor-service-for-couchbase-n1qlfeb-refresh\/#primaryimage\",\"url\":\"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2017\/02\/n1ql.png\",\"contentUrl\":\"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2017\/02\/n1ql.png\",\"width\":512,\"height\":512,\"caption\":\"N1QL\"},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/www.couchbase.com\/blog\/index-advisor-service-for-couchbase-n1qlfeb-refresh\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\/\/www.couchbase.com\/blog\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Index Advisor Service for Couchbase N1QL(Feb refresh)\"}]},{\"@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\":\"en-US\"},{\"@type\":\"Organization\",\"@id\":\"https:\/\/www.couchbase.com\/blog\/#organization\",\"name\":\"The Couchbase Blog\",\"url\":\"https:\/\/www.couchbase.com\/blog\/\",\"logo\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@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\/f99c5767a877147f9cf658230bc2473b\",\"name\":\"Kamini Jagtiani\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/www.couchbase.com\/blog\/#\/schema\/person\/image\/257695296726c224fc7f0e85b30c9129\",\"url\":\"https:\/\/secure.gravatar.com\/avatar\/546f9f69203064f77430f14922d59be33e3f0ea674078a793fc813dd40310c5c?s=96&d=mm&r=g\",\"contentUrl\":\"https:\/\/secure.gravatar.com\/avatar\/546f9f69203064f77430f14922d59be33e3f0ea674078a793fc813dd40310c5c?s=96&d=mm&r=g\",\"caption\":\"Kamini Jagtiani\"},\"description\":\"Kamini Jagtiani is a Senior Engineering Manager for the Query Team at Couchbase R&amp;D. Before Couchbase, Kamini was 7 years at Futurewei as Kernel Architect\/Manager and 13 years at IBM Informix as Software Engineer. Kamini has a Bachelors's degree in Computer Science and Engineering from Bombay University, India and holds 5 US patents.\",\"url\":\"https:\/\/www.couchbase.com\/blog\/author\/kaminijagtiani\/\"}]}<\/script>\n<!-- \/ Yoast SEO Premium plugin. -->","yoast_head_json":{"title":"Index Advisor Service for Couchbase N1QL(Feb refresh) - The Couchbase Blog","description":"Follow-up blog for recent defects fixed in Couchbase Index advisor provides secondary index recommendations for SQL-like queries on JSON documents to improve query performance.","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\/index-advisor-service-for-couchbase-n1qlfeb-refresh\/","og_locale":"en_US","og_type":"article","og_title":"Index Advisor Service for Couchbase N1QL(Feb refresh)","og_description":"Follow-up blog for recent defects fixed in Couchbase Index advisor provides secondary index recommendations for SQL-like queries on JSON documents to improve query performance.","og_url":"https:\/\/www.couchbase.com\/blog\/index-advisor-service-for-couchbase-n1qlfeb-refresh\/","og_site_name":"The Couchbase Blog","article_published_time":"2020-02-12T18:43:00+00:00","article_modified_time":"2025-06-14T00:21:50+00:00","og_image":[{"width":512,"height":512,"url":"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2017\/02\/n1ql.png","type":"image\/png"}],"author":"Kamini Jagtiani","twitter_card":"summary_large_image","twitter_misc":{"Written by":"Kamini Jagtiani","Est. reading time":"4 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/www.couchbase.com\/blog\/index-advisor-service-for-couchbase-n1qlfeb-refresh\/#article","isPartOf":{"@id":"https:\/\/www.couchbase.com\/blog\/index-advisor-service-for-couchbase-n1qlfeb-refresh\/"},"author":{"name":"Kamini Jagtiani","@id":"https:\/\/www.couchbase.com\/blog\/#\/schema\/person\/f99c5767a877147f9cf658230bc2473b"},"headline":"Index Advisor Service for Couchbase N1QL(Feb refresh)","datePublished":"2020-02-12T18:43:00+00:00","dateModified":"2025-06-14T00:21:50+00:00","mainEntityOfPage":{"@id":"https:\/\/www.couchbase.com\/blog\/index-advisor-service-for-couchbase-n1qlfeb-refresh\/"},"wordCount":395,"commentCount":0,"publisher":{"@id":"https:\/\/www.couchbase.com\/blog\/#organization"},"image":{"@id":"https:\/\/www.couchbase.com\/blog\/index-advisor-service-for-couchbase-n1qlfeb-refresh\/#primaryimage"},"thumbnailUrl":"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2017\/02\/n1ql.png","keywords":["Index Advisor","Indexes","Query optimization","Secondary indexes"],"articleSection":["Couchbase Capella","Couchbase Server","Global Secondary Index","SQL++ \/ N1QL Query"],"inLanguage":"en-US","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/www.couchbase.com\/blog\/index-advisor-service-for-couchbase-n1qlfeb-refresh\/#respond"]}]},{"@type":"WebPage","@id":"https:\/\/www.couchbase.com\/blog\/index-advisor-service-for-couchbase-n1qlfeb-refresh\/","url":"https:\/\/www.couchbase.com\/blog\/index-advisor-service-for-couchbase-n1qlfeb-refresh\/","name":"Index Advisor Service for Couchbase N1QL(Feb refresh) - The Couchbase Blog","isPartOf":{"@id":"https:\/\/www.couchbase.com\/blog\/#website"},"primaryImageOfPage":{"@id":"https:\/\/www.couchbase.com\/blog\/index-advisor-service-for-couchbase-n1qlfeb-refresh\/#primaryimage"},"image":{"@id":"https:\/\/www.couchbase.com\/blog\/index-advisor-service-for-couchbase-n1qlfeb-refresh\/#primaryimage"},"thumbnailUrl":"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2017\/02\/n1ql.png","datePublished":"2020-02-12T18:43:00+00:00","dateModified":"2025-06-14T00:21:50+00:00","description":"Follow-up blog for recent defects fixed in Couchbase Index advisor provides secondary index recommendations for SQL-like queries on JSON documents to improve query performance.","breadcrumb":{"@id":"https:\/\/www.couchbase.com\/blog\/index-advisor-service-for-couchbase-n1qlfeb-refresh\/#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/www.couchbase.com\/blog\/index-advisor-service-for-couchbase-n1qlfeb-refresh\/"]}]},{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/www.couchbase.com\/blog\/index-advisor-service-for-couchbase-n1qlfeb-refresh\/#primaryimage","url":"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2017\/02\/n1ql.png","contentUrl":"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2017\/02\/n1ql.png","width":512,"height":512,"caption":"N1QL"},{"@type":"BreadcrumbList","@id":"https:\/\/www.couchbase.com\/blog\/index-advisor-service-for-couchbase-n1qlfeb-refresh\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/www.couchbase.com\/blog\/"},{"@type":"ListItem","position":2,"name":"Index Advisor Service for Couchbase N1QL(Feb refresh)"}]},{"@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":"en-US"},{"@type":"Organization","@id":"https:\/\/www.couchbase.com\/blog\/#organization","name":"The Couchbase Blog","url":"https:\/\/www.couchbase.com\/blog\/","logo":{"@type":"ImageObject","inLanguage":"en-US","@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\/f99c5767a877147f9cf658230bc2473b","name":"Kamini Jagtiani","image":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/www.couchbase.com\/blog\/#\/schema\/person\/image\/257695296726c224fc7f0e85b30c9129","url":"https:\/\/secure.gravatar.com\/avatar\/546f9f69203064f77430f14922d59be33e3f0ea674078a793fc813dd40310c5c?s=96&d=mm&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/546f9f69203064f77430f14922d59be33e3f0ea674078a793fc813dd40310c5c?s=96&d=mm&r=g","caption":"Kamini Jagtiani"},"description":"Kamini Jagtiani is a Senior Engineering Manager for the Query Team at Couchbase R&amp;D. Before Couchbase, Kamini was 7 years at Futurewei as Kernel Architect\/Manager and 13 years at IBM Informix as Software Engineer. Kamini has a Bachelors's degree in Computer Science and Engineering from Bombay University, India and holds 5 US patents.","url":"https:\/\/www.couchbase.com\/blog\/author\/kaminijagtiani\/"}]}},"authors":[{"term_id":9099,"user_id":50908,"is_guest":0,"slug":"kaminijagtiani","display_name":"Kamini Jagtiani","avatar_url":"https:\/\/secure.gravatar.com\/avatar\/546f9f69203064f77430f14922d59be33e3f0ea674078a793fc813dd40310c5c?s=96&d=mm&r=g","author_category":"","last_name":"Jagtiani","first_name":"Kamini","job_title":"","user_url":"","description":"Kamini Jagtiani is a Senior Engineering Manager for the Query Team at Couchbase R&amp;D. Before Couchbase, Kamini was 7 years at Futurewei as Kernel Architect\/Manager and 13 years at IBM Informix as Software Engineer. Kamini has a Bachelors's degree in Computer Science and Engineering from Bombay University, India and holds 5 US patents."}],"_links":{"self":[{"href":"https:\/\/www.couchbase.com\/blog\/wp-json\/wp\/v2\/posts\/8187","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.couchbase.com\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.couchbase.com\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.couchbase.com\/blog\/wp-json\/wp\/v2\/users\/50908"}],"replies":[{"embeddable":true,"href":"https:\/\/www.couchbase.com\/blog\/wp-json\/wp\/v2\/comments?post=8187"}],"version-history":[{"count":0,"href":"https:\/\/www.couchbase.com\/blog\/wp-json\/wp\/v2\/posts\/8187\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.couchbase.com\/blog\/wp-json\/wp\/v2\/media\/2560"}],"wp:attachment":[{"href":"https:\/\/www.couchbase.com\/blog\/wp-json\/wp\/v2\/media?parent=8187"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.couchbase.com\/blog\/wp-json\/wp\/v2\/categories?post=8187"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.couchbase.com\/blog\/wp-json\/wp\/v2\/tags?post=8187"},{"taxonomy":"author","embeddable":true,"href":"https:\/\/www.couchbase.com\/blog\/wp-json\/wp\/v2\/ppma_author?post=8187"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}