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.查看索引
查看empsalary和empdepartment表上创建的索引,可以看到两张表各创建了2个索引。
SHOW INDEX FROM empsalary;
SHOW INDEX FROM empdepartment;
学员评价