Esta es nuestra entrega de junio para Servicio Index Advisor para N1QL después de solucionar algunos de los errores que se encontraron tras nuestra última actualización en mayo. Tenemos previsto seguir improvisando el servicio Index Advisor(¿De qué se trata?). Las correcciones en Index Advisor que normalmente vería en la siguiente versión de mantenimiento están ahora a su disposición cada mes.
¿Para quién es? y ¿Cuándo utilizarlo?
http://index-advisor.couchbase.com/
A costa de repetirme,
Este servicio ofrece recomendaciones sobre índices para ayudar a los administradores de bases de datos, desarrolladores y arquitectos a optimizar el rendimiento de las consultas y cumplir los acuerdos de nivel de servicio.
Este servicio le resultará útil si
- Quiere evitar leer el creación de índices normasCompréndalos y aplíquelos para encontrar los índices adecuados para su consulta/consultas/carga de trabajo.
- Desea seguir utilizando Couchbase Community Edition.
- ¿Está utilizando un versión anterior de Couchbase (versión 5.5,6.0) y necesitas ayuda para crear los índices adecuados para tus consultas.
- Desea generar consejos para los índices sin crear un cubo o cargar el esquema o los datos.
¿Qué hay de nuevo?
Incluso si usted tiene el servidor Couchbase Server 6.5 descargado y puede utilizar Index Advisor desde Query Workbench, este Index Advisor es una versión más reciente (sin un gran aspecto de interfaz de usuario), pero con los siguientes defectos corregidos.
1. Advise no proporciona el índice de cobertura para la operación de unión.
Con esta mejora, una consulta como
1 2 3 4 |
CONSEJO SELECCIONE t_1.int_campo1 , t_1.decimal_campo1 , t_1.clave_primaria_id , t_1.campo_bool1 DESDE cubo_01 t_1 INTERIOR ÚNASE A cubo_04 t_4 EN ( t_1.primary_key_id = t_4.clave_primaria_id ) INTERIOR ÚNASE A cubo_04 t_5 EN ( t_1.primary_key_id = t_5.clave_primaria_id ); |
que solía dar
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 |
{ "resultados": [ { "#operator": "Aconsejar", "consejos": { "#operator": "IndexAdvice", "adviseinfo": { "índices_recomendados": { "índices_de_cobertura": [ { "declaración_índice": "CREATE INDEX adv_primary_key_id ON `bucket_04`(`primary_key_id`)", "keyspace_alias": "bucket_04_t_4" }, { "declaración_índice": "CREATE INDEX adv_primary_key_id ON `bucket_04`()", "keyspace_alias": "bucket_04_t_5" } ], "índices": [ { "declaración_índice": "CREATE INDEX adv_primary_key_id ON `bucket_04`(`primary_key_id`)", "keyspace_alias": "bucket_04_t_4", "recomendando_regla": "Las claves de índice siguen el orden de los tipos de predicado: 9. predicado join no estático". }, { "declaración_índice": "CREATE INDEX adv_primary_key_id ON `bucket_01`(`primary_key_id`)", "keyspace_alias": "bucket_01_t_1", "recomendando_regla": "Las claves de índice siguen el orden de los tipos de predicado: 6. filtro join derivado como clave principal". } ] } } }, "consulta": "SELECT t_1.int_field1 , t_1.decimal_field1 , t_1.primary_key_id , t_1.bool_field1\nFROM bucket_01 t_1\nINNER JOIN bucket_04 t_4\nON ( t_1.primary_key_id = t_4.primary_key_id )\nINNER JOIN bucket_04 t_5\nON ( t_1.primary_key_id = t_5.primary_key_id );" } ] } |
Esta consulta no pudo dar una recomendación de índice de cobertura para bucket_01.
ahora da
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 |
{ "resultados": [ { "#operator": "Aconsejar", "consejos": { "#operator": "IndexAdvice", "adviseinfo": { "índices_recomendados": { "índices_de_cobertura": [ { "declaración_índice": "CREATE INDEX adv_primary_key_id_int_field1_bool_field1_decimal_field1 ON `bucket_01`(`primary_key_id`,`int_field1`,`bool_field1`,`decimal_field1`)", "keyspace_alias": "bucket_01_t_1" }, { "declaración_índice": "CREATE INDEX adv_primary_key_id ON `bucket_04`(`primary_key_id`)", "keyspace_alias": "bucket_04_t_4;bucket_04_t_5" } ], "índices": [ { "declaración_índice": "CREATE INDEX adv_primary_key_id ON `bucket_01`(`primary_key_id`)", "keyspace_alias": "bucket_01_t_1", "recomendando_regla": "Las claves de índice siguen el orden de los tipos de predicado: 6. filtro join derivado como clave principal". }, { "declaración_índice": "CREATE INDEX adv_primary_key_id ON `bucket_04`(`primary_key_id`)", "keyspace_alias": "bucket_04_t_4;bucket_04_t_5", "recomendando_regla": { "bucket_04_t_4": "Las claves de índice siguen el orden de los tipos de predicado: 9. predicado join no estático"., "bucket_04_t_5": "Las claves de índice siguen el orden de los tipos de predicado: 9. predicado join no estático". } } ] } } }, "consulta": "SELECT t_1.int_field1 , t_1.decimal_field1 , t_1.primary_key_id , t_1.bool_field1 FROM bucket_01 t_1 INNER JOIN bucket_04 t_4 ON ( t_1.primary_key_id = t_4.primary_key_id ) INNER JOIN bucket_04 t_5 ON ( t_1.primary_key_id = t_5.primary_key_id );" } ] } |
2. Advise devuelve a veces una recomendación de índice vacía
Una consulta como:
1 2 3 4 5 6 7 |
CONSEJO SELECCIONE t_1.int_campo1 , t_1.decimal_campo1 , t_1.clave_primaria_id , t_1.campo_bool1 DESDE cubo_01 t_1 IZQUIERDA ÚNASE A cubo_05 t_1SiRAdlidCB EN ( t_1.primary_key_id = t_1SiRAdlidCB.clave_primaria_id ) IZQUIERDA ÚNASE A cubo_010 t_1fLjtGGSnKf EN ( t_1.primary_key_id = t_1fLjtGGSnKf.clave_primaria_id ) INTERIOR ÚNASE A cubo_04 t_1GHMwUzdukS EN ( t_1.primary_key_id = t_1GHMwUzdukS.clave_primaria_id ) INTERIOR ÚNASE A cubo_04 t_1LjVrlSNfDc EN ( t_1.primary_key_id = t_1LjVrlSNfDc.clave_primaria_id ) DONDE ((t_1.primary_key_id IS NO NULL Y t_1.campo_int1 IS NULL)) O ((t_1.campo_int1 >= 47635891 O t_1.varchar_campo1 IS NO NULL)); |
utilizado para dar
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 |
{ "resultados": [ { "#operator": "Aconsejar", "consejos": { "#operator": "IndexAdvice", "adviseinfo": { "índices_recomendados": { "índices_de_cobertura": [ { "declaración_índice": "CREATE INDEX adv_primary_key_id ON `bucket_05`(`primary_key_id`)", "keyspace_alias": "bucket_05_t_1SiRAdlidCB" }, { "declaración_índice": "CREATE INDEX adv_primary_key_id ON `bucket_010`(`primary_key_id`)", "keyspace_alias": "bucket_010_t_1fLjtGGSnKf" }, { "declaración_índice": "CREATE INDEX adv_primary_key_id ON `bucket_04`(`primary_key_id`)", "keyspace_alias": "bucket_04_t_1GHMwUzdukS" }, { "declaración_índice": "CREATE INDEX adv_primary_key_id ON `bucket_04`()", "keyspace_alias": "bucket_04_t_1LjVrlSNfDc" } ], "índices": [ { "declaración_índice": "CREATE INDEX adv_int_field1_primary_key_id ON `bucket_01`(`int_field1`,`primary_key_id`)", "keyspace_alias": "bucket_01_t_1", "recomendando_regla": " Las claves de índice siguen el orden de los tipos de predicado: 1. Clave principal común para la disyunción (2. igualdad/nulo/falta), 7. no nulo/falta/valor". }, { "declaración_índice": "CREATE INDEX adv_varchar_field1 ON `bucket_01`(`varchar_field1`)", "keyspace_alias": "bucket_01_t_1", "recomendando_regla": "Las claves de índice siguen el orden de los tipos de predicado: 7. not null/not missing/valued." }, { "declaración_índice": "CREATE INDEX adv_primary_key_id ON `bucket_05`(`primary_key_id`)", "keyspace_alias": "bucket_05_t_1SiRAdlidCB", "recomendando_regla": "Las claves de índice siguen el orden de los tipos de predicado: 9. predicado join no estático". }, { "declaración_índice": "CREATE INDEX adv_primary_key_id ON `bucket_010`(`primary_key_id`)", "keyspace_alias": "bucket_010_t_1fLjtGGSnKf", "recomendando_regla": "Las claves de índice siguen el orden de los tipos de predicado: 9. predicado join no estático". }, { "declaración_índice": "CREATE INDEX adv_primary_key_id ON `bucket_04`(`primary_key_id`)", "keyspace_alias": "bucket_04_t_1GHMwUzdukS", "recomendando_regla": "Las claves de índice siguen el orden de los tipos de predicado: 9. predicado join no estático". } ] } } }, "consulta": "SELECT t_1.int_field1 , t_1.decimal_field1 , t_1.primary_key_id , t_1.bool_field1 FROM bucket_01 t_1 LEFT JOIN bucket_05 t_1SiRAdlidCB ON ( t_1.primary_key_id = t_1SiRAdlidCB.primary_key_id ) LEFT JOIN bucket_010 t_1fLjtGGSnKf ON ( t_1.primary_key_id = t_1fLjtGGSnKf.primary_key_id ) INNER JOIN bucket_04 t_1GHMwUzdukS ON ( t_1.primary_key_id = t_1GHMwUzdukS.primary_key_id ) INNER JOIN bucket_04 t_1LjVrlSNfDc ON ( t_1.primary_key_id = t_1LjVrlSNfDc.primary_key_id ) WHERE ((t_1.primary_key_id IS NOT NULL AND t_1.int_field1 IS NULL)) OR ((t_1.int_field1 >= 47635891 OR t_1.varchar_field1 IS NOT NULL));" } ] } |
Hay un índice en blanco que se recomienda, además dice que esos índices están cubriendo pero no incluyen campos del predicado.
ahora da
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 |
{ "resultados": [ { "#operator": "Aconsejar", "consejos": { "#operator": "IndexAdvice", "adviseinfo": { "índices_recomendados": { "índices_de_cobertura": [ { "declaración_índice": "CREATE INDEX adv_primary_key_id ON `bucket_05`(`primary_key_id`)", "keyspace_alias": "bucket_05_t_1SiRAdlidCB" }, { "declaración_índice": "CREATE INDEX adv_primary_key_id ON `bucket_010`(`primary_key_id`)", "keyspace_alias": "bucket_010_t_1fLjtGGSnKf" }, { "declaración_índice": "CREATE INDEX adv_primary_key_id ON `bucket_04`(`primary_key_id`)", "keyspace_alias": "bucket_04_t_1GHMwUzdukS;bucket_04_t_1LjVrlSNfDc" } ], "índices": [ { "declaración_índice": "CREATE INDEX adv_primary_key_id ON `bucket_010`(`primary_key_id`)", "keyspace_alias": "bucket_010_t_1fLjtGGSnKf", "recomendando_regla": "Las claves de índice siguen el orden de los tipos de predicado: 9. predicado join no estático". }, { "declaración_índice": "CREATE INDEX adv_primary_key_id ON `bucket_04`(`primary_key_id`)", "keyspace_alias": "bucket_04_t_1GHMwUzdukS;bucket_04_t_1LjVrlSNfDc", "recomendando_regla": { "bucket_04_t_1GHMwUzdukS": "Las claves de índice siguen el orden de los tipos de predicado: 9. predicado join no estático"., "bucket_04_t_1LjVrlSNfDc": "Las claves de índice siguen el orden de los tipos de predicado: 9. predicado join no estático". } }, { "declaración_índice": "CREATE INDEX adv_int_field1_primary_key_id ON `bucket_01`(`int_field1`,`primary_key_id`)", "keyspace_alias": "bucket_01_t_1", "recomendando_regla": " Las claves de índice siguen el orden de los tipos de predicado: 1. Clave principal común para la disyunción (2. igualdad/nulo/falta), 7. no nulo/falta/valor". }, { "declaración_índice": "CREATE INDEX adv_varchar_field1 ON `bucket_01`(`varchar_field1`)", "keyspace_alias": "bucket_01_t_1", "recomendando_regla": "Las claves de índice siguen el orden de los tipos de predicado: 7. not null/not missing/valued." }, { "declaración_índice": "CREATE INDEX adv_primary_key_id ON `bucket_05`(`primary_key_id`)", "keyspace_alias": "bucket_05_t_1SiRAdlidCB", "recomendando_regla": "Las claves de índice siguen el orden de los tipos de predicado: 9. predicado join no estático". } ] } } }, "consulta": "SELECT t_1.int_field1 , t_1.decimal_field1 , t_1.primary_key_id , t_1.bool_field1 FROM bucket_01 t_1 LEFT JOIN bucket_05 t_1SiRAdlidCB ON ( t_1.primary_key_id = t_1SiRAdlidCB.primary_key_id ) LEFT JOIN bucket_010 t_1fLjtGGSnKf ON ( t_1.primary_key_id = t_1fLjtGGSnKf.primary_key_id ) INNER JOIN bucket_04 t_1GHMwUzdukS ON ( t_1.primary_key_id = t_1GHMwUzdukS.primary_key_id ) INNER JOIN bucket_04 t_1LjVrlSNfDc ON ( t_1.primary_key_id = t_1LjVrlSNfDc.primary_key_id ) WHERE ((t_1.primary_key_id IS NOT NULL AND t_1.int_field1 IS NULL)) OR ((t_1.int_field1 >= 47635891 OR t_1.varchar_field1 IS NOT NULL));" } ] } |
3. Debe dar una recomendación con un tipo de descripción en el campo
Una consulta del tipo
1 |
CONSEJO seleccione país de `por defecto` donde pro_cuenta=verdadero y país = "USA" pedir por país DESC |
utilizado para dar
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 |
{ "resultados": [ { "#operator": "Aconsejar", "consejos": { "#operator": "IndexAdvice", "adviseinfo": { "índices_recomendados": { "índices_de_cobertura": [ { "<span style="color: #ff0000;" data-mce-style="color: #ff0000;">index_statement": "CREATE INDEX adv_pro_account_country ON `default`(`pro_account`,`country`)",</span> "keyspace_alias": "por defecto" } ], "índices": [ { "declaración_índice": "CREATE INDEX adv_pro_account_country ON `default`(`pro_account`,`country`)", "keyspace_alias": "por defecto", "recomendando_regla": "Las claves de índice siguen el orden de los tipos de predicado: 2. igualdad/nulo/falta". } ] } } }, "consulta": "select country from default where pro_account=true and country = \"USA\" order by country DESC" } ] } |
ahora da:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 |
{ "resultados": [ { "#operator": "Aconsejar", "consejos": { "#operator": "IndexAdvice", "adviseinfo": { "índices_recomendados": { "índices_de_cobertura": [ { "declaración_índice": "CREATE INDEX adv_countryDESC_pro_account ON `default`(`country` DESC,`pro_account`)",</span> "keyspace_alias": "por defecto" } ], "índices": [ { "declaración_índice": "CREATE INDEX adv_country_pro_account ON `default`(`country`,`pro_account`)", "keyspace_alias": "por defecto", "recomendando_regla": "Las claves de índice siguen el orden de los tipos de predicado: 2. igualdad/nulo/falta". } ] } } }, "consulta": "select country from default where pro_account=true and country = \"USA\" order by country DESC" } ] } |
4. Asesor de índices para combinar información para la definición de índices duplicados
Eliminamos la definición duplicada del índice para una consulta.
Pero hay algunos casos en los que el índice duplicado puede aplicarse a diferentes keyspace_alias con diferentes reglas de recomendación.
Una consulta como:
1 2 3 4 5 6 7 |
CONSEJO SELECCIONE * DESDE cubo_01 t_1 IZQUIERDA ÚNASE A cubo_05 t_2 EN ( t_1.primary_key_id = t_2.clave_primaria_id ) IZQUIERDA ÚNASE A cubo_010 t_3 EN ( t_1.primary_key_id = t_3.clave_primaria_id ) INTERIOR ÚNASE A cubo_04 t_4 EN ( t_1.primary_key_id = t_4.clave_primaria_id ) INTERIOR ÚNASE A cubo_04 t_5 EN ( t_1.primary_key_id = t_5.clave_primaria_id ) DONDE ((t_1.primary_key_id IS NO NULL Y t_1.campo_int1 IS NULL)) O ((t_1.campo_int1 >= 47635891 O t_1.varchar_campo1 IS NO NULL)); |
utilizado para dar
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 |
{ "resultados": [ { "#operator": "Aconsejar", "consejos": { "#operator": "IndexAdvice", "adviseinfo": { "índices_recomendados": { "índices": [ { "declaración_índice": "CREATE INDEX adv_primary_key_id ON `bucket_010`(`primary_key_id`)", "keyspace_alias": "bucket_010_t_3", "recomendando_regla": "Las claves de índice siguen el orden de los tipos de predicado: 9. predicado join no estático". }, { "declaración_índice": "CREATE INDEX adv_primary_key_id ON `bucket_04`(`primary_key_id`)", "keyspace_alias": "bucket_04_t_4", "recomendando_regla": "Las claves de índice siguen el orden de los tipos de predicado: 9. predicado join no estático". }, { "declaración_índice": "CREATE INDEX adv_int_field1_primary_key_id ON `bucket_01`(`int_field1`,`primary_key_id`)", "keyspace_alias": "bucket_01_t_1", "recomendando_regla": " Las claves de índice siguen el orden de los tipos de predicado: 1. Clave principal común para la disyunción (2. igualdad/nulo/falta), 7. no nulo/falta/valor". }, { "declaración_índice": "CREATE INDEX adv_varchar_field1 ON `bucket_01`(`varchar_field1`)", "keyspace_alias": "bucket_01_t_1", "recomendando_regla": "Las claves de índice siguen el orden de los tipos de predicado: 7. not null/not missing/valued." }, { "declaración_índice": "CREATE INDEX adv_primary_key_id ON `bucket_05`(`primary_key_id`)", "keyspace_alias": "bucket_05_t_2", "recomendando_regla": "Las claves de índice siguen el orden de los tipos de predicado: 9. predicado join no estático". } ] } } }, "consulta": "SELECT * FROM bucket_01 t_1 LEFT JOIN bucket_05 t_2 ON ( t_1.primary_key_id = t_2.primary_key_id ) LEFT JOIN bucket_010 t_3 ON ( t_1.primary_key_id = t_3.primary_key_id ) INNER JOIN bucket_04 t_4 ON ( t_1.primary_key_id = t_4.primary_key_id ) INNER JOIN bucket_04 t_5 ON ( t_1.primary_key_id = t_5.primary_key_id ) WHERE ((t_1.primary_key_id IS NOT NULL AND t_1.int_field1 IS NULL)) OR ((t_1.int_field1 >= 47635891 OR t_1.varchar_field1 IS NOT NULL));" } ] } |
ahora da:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 |
{ "resultados": [ { "#operator": "Aconsejar", "consejos": { "#operator": "IndexAdvice", "adviseinfo": { "índices_recomendados": { "índices": [ { "declaración_índice": "CREATE INDEX adv_int_field1_primary_key_id ON `bucket_01`(`int_field1`,`primary_key_id`)", "keyspace_alias": "bucket_01_t_1", "recomendando_regla": " Las claves de índice siguen el orden de los tipos de predicado: 1. Clave principal común para la disyunción (2. igualdad/nulo/falta), 7. no nulo/falta/valor". }, { "declaración_índice": "CREATE INDEX adv_varchar_field1 ON `bucket_01`(`varchar_field1`)", "keyspace_alias": "bucket_01_t_1", "recomendando_regla": "Las claves de índice siguen el orden de los tipos de predicado: 7. not null/not missing/valued." }, { "declaración_índice": "CREATE INDEX adv_primary_key_id ON `bucket_05`(`primary_key_id`)", "keyspace_alias": "bucket_05_t_2", "recomendando_regla": "Las claves de índice siguen el orden de los tipos de predicado: 9. predicado join no estático". }, { "declaración_índice": "CREATE INDEX adv_primary_key_id ON `bucket_010`(`primary_key_id`)", "keyspace_alias": "bucket_010_t_3", "recomendando_regla": "Las claves de índice siguen el orden de los tipos de predicado: 9. predicado join no estático". }, { "declaración_índice": "CREATE INDEX adv_primary_key_id ON `bucket_04`(`primary_key_id`)", "keyspace_alias": <span estilo="color: #0000ff;" datos-mce-estilo="color: #0000ff;">"bucket_04_t_4;bucket_04_t_5"</span>, "recomendando_regla": { "bucket_04_t_4": "Las claves de índice siguen el orden de los tipos de predicado: 9. predicado join no estático"., "bucket_04_t_5": "Las claves de índice siguen el orden de los tipos de predicado: 9. predicado join no estático". } } ] } } }, "consulta": "SELECT * \nFROM bucket_01 t_1 \nLEFT JOIN bucket_05 t_2 ON ( t_1.primary_key_id = t_2.primary_key_id ) \nLEFT JOIN bucket_010 t_3 ON ( t_1.primary_key_id = t_3.primary_key_id ) \nINNER JOIN bucket_04 t_4 ON ( t_1.primary_key_id = t_4.primary_key_id ) \nINNER JOIN bucket_04 t_5 ON ( t_1.primary_key_id = t_5.primary_key_id ) \nWHERE ((t_1.primary_key_id IS NOT NULL AND t_1.int_field1 IS NULL)) OR ((t_1.int_field1 >= 47635891 OR t_1.varchar_field1 IS NOT NULL));" } ] } |
5. El asesor de índices devuelve una recomendación de índice errónea en una consulta no declarada
Una consulta como:
1 2 3 |
aconsejar SELECCIONE meta(t).id _id,t.tipo,rama.branchId DESDE prueba AS t UNNEST t.ramas AS rama DONDE t.tipo es valorado Y rama.branchId > (t.sucursalactual-2) pedir por rama.lastUpdateOn |
solía dar:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 |
{ "resultados": [ { "#operator": "Aconsejar", "consejos": { "#operator": "IndexAdvice", "adviseinfo": { "índices_recomendados": { "índices": [ { "declaración_índice": "CREATE INDEX adv_ALL_branches_type_2 ON `test`(<span style="color: #ff0000;" data-mce-style="color: #ff0000;">ALL `ramas`,`tipo`,2<\/span>)", "keyspace_alias": "test_t", "recomendando_regla": "Las claves de índice siguen el orden de los tipos de predicado: 1. índice de array principal para unnest, 7. not null/not missing/valued, 9. predicado join no estático". } ] } } }, "consulta": "SELECT meta(t).id _id,t.type,branch.branchId FROM test AS t UNNEST t.branches AS branch WHERE t.type is valued AND branch.branchId > (t.currentBranch-2) order by branch.lastUpdateOn" } ] } |
ahora da
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 |
{ "resultados": [ { "#operator": "Aconsejar", "consejos": { "#operator": "IndexAdvice", "adviseinfo": { "índices_recomendados": { "índices": [ { "declaración_índice": "CREATE INDEX adv_ALL_branches_branchId_type ON `test`(<span style="color: #0000ff;" data-mce-style="color: #0000ff;">ALL ARRAY `branch`.`branchId` FOR branch IN `branches` END,`type`<\/span>)", "keyspace_alias": "test_t", "recomendando_regla": "Las claves de índice siguen el orden de los tipos de predicado: 1. índice de array principal para unnest, 7. not null/not missing/valued." } ] } } }, "consulta": "SELECT meta(t).id _id,t.type,branch.branchId\nFROM test AS t\nUNNNEST t.branches AS branch\nWHERE t.type is valued AND branch.branchId > (t.currentBranch-2) order by branch.lastUpdateOn" } ] } |
Pruébalo y cualquier problema que veas con los índices recomendados por Index Advisor Service, puedes añadirlo como comentario a este blog
Más información sobre la función Index Advisor:
https://www.couchbase.com/blog/index-advisor-service/
https://www.couchbase.com/blog/index-advisor-service-for-couchbase-n1qlfeb-refresh/
https://www.couchbase.com/blog/index-advisor-service-for-n1ql-march-refresh/
https://www.couchbase.com/blog/n1ql-index-advisor-improve-query-performance-and-productivity/
https://www.couchbase.com/blog/index-advisor-for-query-workload/
https://docs.couchbase.com/server/6.5/n1ql/n1ql-language-reference/advise.html
https://docs.couchbase.com/server/6.5/n1ql/n1ql-language-reference/advisor.html
https://docs.couchbase.com/server/6.5/tools/query-workbench.html#index-advisor