1.使用分页
最好的优化莫过于分页查询,使用 LIMIT page,size,这是提升查询速度最快的方法,面对百万级的数据谁也不能一次性显示完(数据统计、计算除外),所以这是最佳选择。
2.数据库表设计
表设计合理也会极大的增加查询效率
(1). 如果此表的作用是日志记录,都是insert和select并无其他操作,表引擎建成myisam为最合适的选择。如果修改编辑操作多则不建议使用。
(2).对主键没有特殊的要求和条件,应该设置主键为数字并且自增也会提升查询效率。
(3).对查询条件加上索引,但是对于字段值过长或者否定性不是很强的不用加上索引,。
(4).对于固定的数据类型的长度用最合适的长度。
(5).避免使用视图,会增大对数据库维护成本
(6).避免使用存储过程,会增大对数据库的维护成本,并且存储过程计算处理数据会影响数据库性难
2.查询优化,使用执行计划分析
MySQL提供explain/desc命令输出执行计划,我们通过执行计划优化SQL语句。
(1).应尽量避免在 where 子句中使用 or 来连接条件,否则将导致引擎放弃使用索引而进行全表扫描
(2).减少使用模糊查询,如要使用,请尽量使用半模糊。
明显的看到全模糊会慢于半模糊,因为全模糊会放弃使用索引
(3)这里可以看见我查总数的时候用到的count(*),***现在有很多争论的就是count(1)和count(✳),其实两者并无明显差异,当where条件无索引的时候,count(1)快些,有索引的情况下是一样的。
(4)使用exists代替in查询(适用于A表数据量小于B表数据量)
(5)少用子查询,尽量能用关联查询就使用关联查询