实验3: 索引设计
指导教师:邹兆年(znzou@hit.edu.cn)
1. 实验⽬的
(1) 理解索引的⽤途和类型。
(2) 掌握索引设计的准则。
(3) 理解利⽤索引来加速查询执⾏的限制条件。
(4) 了解EXPLAIN命令的使⽤⽅法。
2. 实验内容
(1) 在⼀个数据库中创建两个模式和内容均相同的表T1和T2,其中T1上建有索引,⽽T2上没有建⽴索引。
(2) 准备⼀组查询,并在T1和T2上分别执⾏这些查询,测量查询执⾏时间,⽐较同⼀个查询在哪个表上执⾏得更
快。
(3) 使⽤EXPLAIN命令获得每个查询在T1上的执⾏计划,分析查询执⾏计划是否利⽤了T1上的索引,利⽤了索引键
中哪些属性。运⽤课上学习的理论知识,解释为什么会获得该查询执⾏计划。
3. 实验过程
(1) 在⼀个MySQL数据库中创建两个模式和内容均相同的表Foo和FooIdx。两个表的模式定义如下:
学⽣可以使⽤教师提供的index-demo-db.sql来创建这两个表,或者⾃⼰创建这两个表,然后根据这两个表中数据
的填充规律,⾃⼰编程序向这两个表中插⼊更多的数据。
这两个表的元组填充规律如下:
所有元组的id属性值从0开始递增;
元组的tag属性值是其id属性值的字符串;
元组的a属性值是其id属性值对1000取模(mod)的结果;
元组的b属性值是其id属性值对100取模(mod)的结果;
元组的c属性值是其id属性值对10取模(mod)的结果。
学⽣可以使⽤下⾯的SQL语句查询两个表中的数据分布:
CREATE TABLE Foo (id INT PRIMARY KEY, tag VARCHAR(8), a INT, b INT, c INT);
CREATE TABLE FooIdx (id INT PRIMARY KEY, tag VARCHAR(8), a INT, b INT, c INT);