Mysql大数据优化(三 索引)

sql优化

mysql重要参数max_connections最大连接数

意思是说当前打开数据库连接池的客户端数量的最大限度

curd操作都会触发mysql连接池,当max时会出现排队情况,所以sql必须要执行高效

从而保证不会出现max状况

另外特殊sql会出现锁表,所行的现象,如果此类特殊sql时间过长导致某数据表不可用,会是极大损失,避免这种现象的最好办法是把特殊sql写成高效sql,拆分by语句,避免sql执行时间过长,从而减少数据表开销

我这个sql写了38行,1965字节,8表联查, 你过来看看我这个sql多牛逼, 好吧,这个sql只能看看

Mysql大数据优化(三 索引)_第1张图片

依次代表:本次查询ID(多表查会出现多个)

查询模式:简单         表名                 查询原则:all扫所有                 可能用到的索引      实际用到的索引         用到的索引的字段长度                查询行数

Mysql大数据优化(三 索引)_第2张图片

type最差为all(data_all)《index(index_all)(扫所有所以i你节点)《range(范围)《ref(通常为普通索引)《eq_ref《const。system,null(count(*)myisam出现,因为myisam维护了一个数据总条数)


Mysql大数据优化(三 索引)_第3张图片


去掉cat_id>0在大数据情况下待验证

去掉不走索引, 排序filesort,  不去掉走索引,但是mysql貌似更倾向于第一种sql


select id,name from goods where cat_id in (select id from cat where parent_id=6);

查询6号分类下所有子分类的所有商品

但是sql执行顺序是

select id,name,cat_id from goods

select parent_id form cat where id = $1sql['cat_id'] and ;parent_id=6

完美替代第一条sql

你可能感兴趣的:(Mysql大数据优化(三 索引))