zoukankan      html  css  js  c++  java
  • mysql优化

    Mysql 优化

    • 服务器硬件
    • Mysql服务器优化
    • SQL语句优化
    • 范式化设计优化
    • 物理设计优化
    • 索引优化

    服务器硬件

    这是最简单的一种方式,1升级硬盘一般数据库服务器的瓶颈都在IO,如果是机械硬盘的话,可以换个固态硬盘。或做磁盘阵列。2升级内存。

    mysql服务器优化

    这种方式是通过,合理地修改Mysql的配置去实现的。将mysql迁移到linux上。

    SQL语句优化

    避免关联子查询

    select a.sname,(select classname from class b where b.classid=a.classid) as classname from student a;改成left join,具体就不写了。

    反范式化设计优化

    冗余必要字段
    注意在业务表中别违反。会大大的降低系统的可维护性与数据的一致性。经常在维护一些老的项目时,吃尽了苦头。几个表中都有这个字段。我更改时,真不知道要改多少个地方。

    物理设计优化

    建表时选择合适的数据类型
    当一个列可以选择多种数据类型时
    1优先考虑数据类型
    2其次是日期,时间类型
    3最后是字符类型
    4对于相同级别的数据类型,应该优先选择占用空间小的数据类型

    索引优化

    • 注意索引顺序与条件的关系,有个最佳左前缀原则。即:where的条件与索引的顺序要一致,不然,将失效。如:索引顺序为A,B,C列。where a=1 and b=2 and c=3.完美走索引。如果是where c=3 and b=2 and a=1 这样索引是不走索引的。如果是where a=1 and c=3 and b=2 那么只走了a的索引。b,c都不起作用。这就是最佳左前缀原则。
    • 当条件中有范围查询的时候,索引必须要建在最后。如:where a>1 and a<7 and b=1 and c=2 索引顺序应该要是:b,c,a。
    • 可以使用explain来查看查询计划。其中有一列:key_len。如果现在索引:a(varchar(10))b(varchar(10))那么key_len=103+103=60。如果查询计划出来的key_len是60则完成走了索引。如果小于60则部分索引失效。备注:类型如果是允许为空的,就要在原大小上加1。varchar 2个字节允许为空所以是3。

    总结

    在项目的优化中,利用好索引,可以让你们项目性能提升百倍。很多nosql的原理,也是在这个基础上建立的。利用树或哈希表这样的数据结构来存储数据,减少搜索时间。

  • 相关阅读:
    PL/SQL注册码
    分页sql
    js获取url值
    C语言中的bool类型 stdbool.h
    语音朗读小程序
    50. Pow(x, n)
    二维数组旋转
    用一位数组代替二维数组作为形参使用
    单链表排序——交换数据成员
    C++重载输入流、输出流运算符
  • 原文地址:https://www.cnblogs.com/wolf12/p/9932899.html
Copyright © 2011-2022 走看看