mysql调优参考威哥公众号——威哥爱编程。
一、在数据库查询的时候避免使用模糊查询。例如:selectstudent_name from student where student_name like '%查询条件%'.
这样查询会导致相关列的索引无法使用。
建议的方式:
1)在前台将需要模糊查询的条件列出来,然后将具体查询的值传给后台。例如:查询一个课程 :在前台直接给一个下拉列表的形式,这样就会将具体的值传给后台,可以保证查询的数值是具体的值。
2)先根据查询的条件在后台查找相关的数据生成一个临时数据,在把这个数据当做条件当做表的连接条件在进行复杂查询。
二、索引问题,在设计表的时候给查询的字段添加索引,当数据量比较少的时候添加索引好像无关紧要,但是当数据量比较大的时候,索引就显得比较重要了。
建立索引以后不要进行一下操作:
避免对索引的字段进行计算操作
避免在索引字段上使用not,<>!=
避免在索引列使用is null 和 is not null
避免在索引列上出现数据类型转换
避免在索引的字段上使用函数
避免在索引的列上使用null值
三、复杂操作
一些比较复杂的sql语句,可以考虑拆成记录,生成几个临时数据,在进行查询。
更新类似相同语句的脚本,可以写成一个脚本。
四、update语句
例如:update 表1 set 字段1 = “xxx” where 字段2=“…” ,具有相类似的结构,可以合成一个update完成。
五、能用union all 就别使用union
六、条件查询的时候避免对条件进行计算操作。条件查询避免使用in not in,可以使用exist not exist来代替 in和not in,可以使用表连接 可以使用表链接来代替。Having可以使用where代替。不能代替,可以将表分成多步查询。
七、select 查询的时候具体到字段。