课程评价 (0)

请对课程作出评价:
0/300

学员评价

暂无精选评价
5分钟

实验验证

1.执行时间对比

对之前的语句进行查询,查看语句执行结果是否相同,对比优化前后的时间和执行计划。

SELECT id,salary FROM empsalary WHERE id=9900;
SELECT id,salary FROM empsalary WHERE substr(id,1,3)='999';
SELECT a.id,b.id FROM leader a JOIN empdepartment b ON a.department=b.department AND b.id=9900;
SELECT id,salary FROM empsalary WHERE id IN (SELECT id FROM leader);
优化后的语句-第一部分
优化后的语句-第二部分

优化后的语句的执行时间相对与之前,有明显的效率改善。

SHOW PROFILES;
优化后的语句-执行时间统计
EXPLAIN SELECT id,salary FROM empsalary WHERE id=9900;
EXPLAIN SELECT id,salary FROM empsalary WHERE substr(id,1,3)='999';
EXPLAIN SELECT a.id,b.id FROM leader a JOIN empdepartment b ON a.department=b.department AND b.id=9900;
EXPLAIN SELECT id,salary FROM empsalary WHERE id IN (SELECT id FROM leader);

2.执行计划对比

查看优化后语句的执行计划,使用了索引代替全表扫描,针对函数查询单独创建的虚拟列函数索引加快了数据定位速度,在多表Nested Loop关联查询中通过索引加快了整体性能,通过语句的改写和调整,使用正确的驱动顺序,优化了多表关联查询的效率。

优化后的语句-执行计划查看

3.查看索引

查看empsalaryempdepartment表上创建的索引,可以看到两张表各创建了2个索引。

SHOW INDEX FROM empsalary;
SHOW INDEX FROM empdepartment;
查看表上创建的索引