表 tb1 仅有索引 ix1(c1,c2,c3),查询语句为: SELECT COUNT(*) FROM tb1 WHERE c2=? AND c3=? 使用 ix1 访问的执行计划会是? A. TABLE FULL SCAN B. TABLE RANGE SCAN C. TABLE SKIP SCAN D. TABLE GET

表 tb1 仅有索引 ix1(c1,c2,c3),查询语句为:
SELECT COUNT(*) FROM tb1 WHERE c2=? AND c3=?
使用 ix1 访问的执行计划会是?
A. TABLE FULL SCAN
B. TABLE RANGE SCAN
C. TABLE SKIP SCAN
D. TABLE GET

这题感觉有点奇怪?我觉得是A才对,有人帮忙验证码?谢谢!

1 个赞

如果不使用hint 默认是走全表扫描,不会走这个索引,不过题中说了要使用这个索引,那就选C吧

2 个赞
--建表建索引
obclient(root@ryc_mysql)[test]> create table tb1(c1 int,c2 int,c3 int);
Query OK, 0 rows affected (0.735 sec)

obclient(root@ryc_mysql)[test]> insert into tb1 values(1,1,1),(2,2,2);
Query OK, 2 rows affected (0.038 sec)
Records: 2  Duplicates: 0  Warnings: 0

obclient(root@ryc_mysql)[test]> alter table tb1 add index ix_1(c1,c2,c3);
Query OK, 0 rows affected (2.234 sec)

如果只是使用索引的话,v4.2.1版本默认不会走table skip scan

要显式的指定index_ss使用跳跃扫描才会走table_skip_scan

所以对于这道题只是要求使用这个ix_1索引没有其他要求的话我认为就是选table full scan

2 个赞

懂了 :partying_face:

1 个赞