- number类型的索引列查询条件为String时不会用到索引,反之一样.
- 遵循最左前缀的原则下,能用联合索引就不要创建多个单列索引,联合索引在多列索引条件都用到时过滤性更强.(当创建a,b联合索引时,即时你的查询是 select xx from xx where b = xx and a = xx, 也会用到索引,mysql在解析完sql后会通过优化器优化你的sql.mysql一个表最多创建16个索引)
- 复杂的sql优化时,可以分步拆分子查询,explain子查询,着重优化耗时较长的子查询,目标是减少rows,走到索引(mysql主键聚簇索引效率最快,叶子节点保存整行数据,二级索引即普通列上的索引叶子节点保存的是主键的值,不是存储行指针!需要再到聚簇索引中查询对应的行数据,即回表.可通过覆盖索引防止回表查询,覆盖索引就是在查询结果的列上建立联合索引).
- 分页查询优化: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 -- 性能较第一种略差,利用主键索引,可以不需要严格递增主键.
相关文章
- 12-21使用wxs优化拖动效果实战总结
- 12-21前端性能优化总结
- 12-21【SQL】各取所需 | SQL JOIN连接查询各种用法总结
- 12-21apk 体积优化方法总结
- 12-21mybatis3进行模糊查询的总结
- 12-21Kafka生产环境问题总结及性能优化实战:JVM参数设置、消息丢失、重复消费、消息乱序、延时队列、消息回溯、分区数量设置、消息传递保障、kafka的事务、kafka高性能的原因
- 12-21Spark面对OOM问题的解决方法及优化总结
- 12-21最常见的Android内存优化方式及防止泄漏造成OOM总结篇
- 12-21vue首屏加载优化总结及整理
- 12-21性能优化之mybatis实现接口的批量查询,减少数据库的查询消耗