【问题描述】
在 MySQL 中使用 in 匹配查询时,是否可以用到 SequoiaDB 中的索引?
如:select * from cl where a in (2,3);
【解决办法】
在 MySQL 中使用 in 时是可以用到 SequoiaDB 中的索引的, 如:
1. 使用MySQL创建表cl,并在'a'字段上创建唯一索引 'idx_a':
create table cl(a int, b int, unique index idx_a(a) );
2. 向表中插入若干数据:
insert into cl values(1, 99);
insert into cl values(2, 99);
insert into cl values(3, 99);
3. 此时使用in进行查询,查看其访问计划:
explain select * from cl where a in (2,3);
在返回的访问计划中可以看到type字段为"range",表示使用索引来选择行,key字段为MySQL决定使用的索引“idx_a”。
4. 当使用 in 进行查询时,在 SequoiaDB 端可通过 coord 节点的审计日志(默认路径为 database/coord/11810/diaglog/sdbaudit.log )看到此查询操作在 SequoiaDB 中使用了“idx_a”索引。
【资料参考】:
MySQL实例组件的使用:http://doc.sequoiadb.com/cn/sequoiadb-cat_id-1521595283-edition_id-0
【备注】
上述MySQL操作命令,访问计划以及SequoiaDB的审计日志可在附件中查看。