mysql 优化建议_Mysql语句优化建议

一、建立索引

1)考虑在 where 及 order by 涉及的列上建立索引

2)对于模糊查询, 建立全文索引

3)对于多主键查询,建立组合索引

二、避免陷阱

然而,一些情况下可能使索引无效:

1)在 where 子句中对字段进行表达式操作

2)在 where 子句中使用 or 来连接条件,如:

select id from t where num=10 or num=20

可以改为

select id from t where num=10

union all

select id from t where num=20

3)在 where 子句中的“=”左边进行表达式运算(可能导致无法正确使用索引)

4)在where 子句中使用参数,如:

select id from t where num=@num

可以改为(强制使用索引):

select id from t with(index(索引名)) where num=@num

5)如果该索引是组合索引,那么必须使用到该索引中的第一个字段作为查询条件, 而且尽可能让字段顺序与索引顺序一致

6)并不是所有索引对查询都有效,SQL是根据表中数据来进行查询优化的,当索引列有大量数据重复时,SQL查询可能不会去利用索引

三、语句优化建议

1)慎用in 和 not in, 如:

select id from t where num in(1,2,3)

可以替代为:

select id from t where num between 1 and 3

2)用具体字段代替*

3)少用VARCHAR、 TEXT、BLOB类型

4)字段表示固定值, 使用ENUM类型代替varchar(内部使用TINYINT)

5)尽可能的使用 varchar/nvarchar 代替 char/nchar (变长字段存储空间小,节省存储空间,对于查询来说,在一个相对较小的字段内搜索效率显然要高些)

6)如果类型不限制, 用int代替varchar(字符串一个个被匹配, 而数值则一次被处理)

7)避免频繁创建和删除临时表,以减少系统表资源的消耗

8)避免频繁创建和删除临时表,以减少系统表资源的消耗

9)尽量避免大事务操作,提高系统并发能力

四、使用工具

1)任何优化都是基于数据基础的。

2)比较语句执行时间, 必要时使用Explain来跟踪查询情况

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值