遵循最左前缀的原则下,能用联合索引就不要创建多个单列索引,联合索引在多列索引条件都用到时过滤性更强.(当创建a,b联合索引时,即时你的查询是 select xx from xx where b = xx and a = xx, 也会用到索引,mysql在解析完sql后会通过优化器优化你的sql.mysql一个表最多创建16个索引)
分页查询优化:mysql的 limit m,n 会扫描m + n行数据,丢掉m前行数据,当m较大时会造成查询性能严重下降,最好的解决方法是通过自增主键筛选当前页数据.
假设table student(id,name,sex,desc,phone,addr) sql: select ... from student where ... limit pageSize(curPage-1), pageSize
(1) select ... from student where id > pageSize(curPage-1) order by id limit pageSize --性能最好的优化
(2) select ... from student s left join (select id from student limit pageSize*(curPage-1),pageSize) s1 on s.id = s1.id limit pageSize -- 性能较第一种略差,利用主键索引,可以不需要严格递增主键.
posted on
2020-11-07 16:25Ivan-yy
阅读(60)
评论(0)
编辑收藏举报