MySQL优化的小知识

MySQL优化
 1.数据库设计要符合3F也就是通常说的三范式
  1.1 第一范式是列具有原子性,即不可再分
  1.2 第二范式是唯一性约束,数据具有唯一性
  1.3 第三范式是数据库字段没有冗余,当然完全没有冗余字段的数据库也未必是最好用的
 2.定位
  2.1 需要定位效率低的sql,然后私用explain进行分析,进而使用相应的优化措施
 3.常用命令
  3.1 show [session|global] status like 'Com_XXX'  XXX 可以是select、insert、update等
  3.2 show [session|global] status like 'Slow_queries' 定位慢查询的条数,默认10s
  注意:
  在默认情况下mysql不记录慢查询日志,需要在启动的时候指定
  bin\mysqld.exe - -safe-mode  - -slow-query-log [mysql5.5 可以在my.ini指定]
       bin\mysqld.exe –log-slow-queries=d:/abc.log [低版本mysql5.0可以在my.ini指定]
 4.为表建立适当的索引
  4.1 字段不具有唯一性的不适合创建索引
  4.2 字段会进行频繁的更新操作的字段不适合作为索引
  4.3 字段不经常出现在where条件中的字段不适合作为索引
 5.索引会被使用和不会被使用的场所
  5.1 使用like的时候,当'%aaa'的时候索引不会被使用,'aaa%'此时索引才会被使用
  5.2 where条件中有or的情况下,索引不会被使用,除非,or的前后两个条件都有索引的情况会被使用索引
  5.3 重要的一点,也是大家经常忽略的一点,当被加索引的字段是字符串类型的时候,此时在where条件中
      一定要用引号将值引起来,要不然使用不到索引,例如 name=aaa 应该写为 name='aaa'
 6.MySQL常用优化
  6.1 默认情况,MySQL对所有的group by col1,col2进行排序。这与在查询中指定order by col1, col2类似。
      如果查询中包括group by但用户想要避免排序结果的消耗,则可以使用order by null禁止排序
  6.2 有些情况下,可以使用连接来替代子查询。 因为使用join,MySQL不需要在内存中创建临时表。
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

浮生(FS)

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值