1,日期大小的比较,传到xml中的日期格式要符合yyyy-MM-dd,这样才能走索引,如:“yyyy”改为‘yyyy-MM-dd’,‘yyyy-MM改为“yyyy-MM-dd”【这样MYSQL会转换为日期类型】
2条件语句中无论是等于,还是大于小于,<代码>,代码>左侧的条件查询字段不要使用函数或表达式或数学运算
3 <代码> 代码>条件语句尝试着调整字段的顺序提升查询速度,如把索引字段放在最前的面,把查询命中率高的字段置前等
4,保证优化SQL前后其查询结果是一致的
5,在查询的时候通过将<代码> 代码>解释命令写在查询语句前,测试语句是否有走索引【具体用法百度】
6,禁止使用<代码> SELECT * FROM 代码>操作,应只返回需要的字段,不需要的字段不要返回
7,可以尝试分解复杂的查询,在应用层面进行表关联,以此代替SQL层面的表关联
, <代码> 代码>子句和<代码>,代码>子句涉及到的列建索引
9,避免在<代码>,代码>子句中对字段进行<代码>空代码>判断【可以对表字段改造一下,字符串型字段默认值设置为<代码>空字符串> 代码,数字型字段默认值设置为<代码> 0 代码>,日期型字段默认值设置为<代码> 1990-01-01
代码>等】10,避免在<代码>,代码>子句中使用<代码> !=代码>或<代码> & lt;在代码>操作符
11,避免在<代码>,代码>子句中使用<代码>或代码>操作符
, <代码>和代码>之间代替<代码> 代码>
13, <代码> 代码> % abc %的不会走索引,而<代码>和代码>“abc %”会走索引
14,避免对字段进行表达式操作
15,避免对字段进行函数操作
<代码>16日GROUP BY 代码>操作默认会对<代码> GROUP BY> 代码后面的字段进行排序,如果你的程序不需要排的序,可在GROUP BY 代码> <代码>语句后面加上零代码> <代码>命令去除排序
17日,如果是数值型字段,则尽量设计为数值型字段,不要为了方便,为了偷懒而给后面维护的同事埋坑
18,表中所有字段设计为<代码>非空代码>
19日返回条数固定时,用<代码> 代码>限制语句限制返回记录的条数,如只需要一条记录,或肯定只有一条记录符合条件,那建议加上<代码>限制1 代码>
对20日于枚举类型的字段【即有固定罗列值的字段】,建议使用<代码> ENUM> 代码而不是<代码> VARCHAR> 代码,如性别,星期,类型、类别等
对21日于存IP地址的字段设计为成<代码> UNSIGNED INT> 代码型
22,避免在SQL中使用<代码>现在()代码>,<代码> CURDATE() 代码>,<代码> RAND() 代码>函数【因为这种方式会导致MYSQL无法使用SQL缓存】,可以转化为通过传入参数的方式
对23日于统计类的查询【如查询连续几个月的数据总量,或查询同比,环比等】,可以通过定时查询并统计到统计表的方式提高查询速度
以上所述是小编给大家介绍的Mysql慢查询优化方法及优化原则,希望对大家有所帮助,如果大家有任何疑问请给我留的言,小编会及时回复大家的。在此也非常感谢大家对网站的支持。
如果你觉得本文对你有帮助,欢迎转载,烦请注明出处,谢谢!