1.explain
针对select进行分析,并输出select执行的详细信息,供开发人员针对性的优化。
在select 前面加上 explain即可使用;
explain select * from prod_main;
执行结果:
2.本次学习首先针对type指标进行优化
type指标逐渐递减:
system>const>eq_ref>ref>fulltext>ref_or_null>index_merge>unique_subquery>index_subquery>range>index>all
本次重点分析4个:
a.const 如果是根据主键或者唯一索引 ,只取出确定的一行数据。是最快的一种。
b.range 索引或者主键,在某个范围内。
c.index 仅仅只有索引被扫描。
d.all 全表扫描,最垃圾的一种。
3.测试,首先往商品主表prod_main插入一百万数据,下面利用存储过程insert_prod_main
BEGIN
#Routine body goes here... set @num = 1;
set @num = 1;
while @num <1000000 DO
insert into prod_main(prod_name,prod_classid,prod_intr)values(concat('商 品',@num),'1','商品详情介绍');
set @num = @num+1;
end while;
END
4.不做任何优化,type为全表扫面
5.优化sql
设置字段 adddate 为普通索引
sql : 增加order by desc 排序,limit限制条数
explain select * from prod_main ORDER BY prod_adddate desc limit 1,10;
执行效果:
type优化为index
6.更进一步优化
sql :增加where
type为range