zoukankan      html  css  js  c++  java
  • 关于mysql数据库优化

    关于mysql数据库优化

    以我之愚见,数据库的优化在于优化存储和查询速度

    目前主要的优化我认为是优化查询速度,查询速度快了,提高了用户的体验

    我认为优化主要从两方面进行考虑,

    优化数据库对象,

    优化sql

    优化数据库对象

    1.优化表的数据类型,对于每个字段用合适的数据类型,既能解决磁盘的存储空间,又能避免浪费程序运行时物理内存的浪费,提高查询速度。

          比如对于不会有负数的整数类型,使用无符号整型,整数范围很小的用tinyint 或者smallint

    2 通过拆分表来提高表的访问效率。(对于MyISAM)

    垂直拆分,水平拆分,如果一个表中一些列常用,一些列不常用,可以用垂直拆分。缺点查询所有数据的时候需要连表。

    3逆规范化

      增加冗余列,    冗余列值得是多个表中有相同的列,这样做是避免查询的时候进行连表操作

     增加派生列     之增加的列来自其他表的数据,由其他表的数据计算得到。这样是为了减少连接操作,避免使用聚合函数

    重新组表   对用户经常查看的数据是使用两张表连起来的数据,可以重新租一张表,也是减少连表的操作

    4使用中间表       中间表复制源表的部分数据,并且与源表隔离,在中间表上查询统计操作不会影响源表。

    中间表可以灵活增加索引,或增加临时的字段,从而提高统计查询效率

    二、sql优化

    ·  在表的查询中,有这个几种查询类型,

    1遍历全表   all

    2 扫描全索引 遍历整个索引   index

    3 索引范围扫描,常见于<   >  >=  between    range

    4使用非唯一索引或者唯一索引的前缀

    5  唯一索引,对于每个索引的键值,表中只有一条记录匹配 eq_ref

    6 const/system  单表中最多有一个匹配行,查询速度非常快,例如根据主键或者唯一索引

    7 null 对于null, mysql不用返回直接能得到结果

    索引是数据库优化最常用和最重要的手段之一。

    索引的存储分类:

    B-tree索引 最常用

    HASH索引  只有memory支持

    R-Tree索引 空间索引,不常用

    Full-text 全文索引

    比较常用的是B-Tree索引和hash索引,hash索引适合key-value查询,不适合范围查找

    b-tree索引并不是二叉树,而是平衡树

    注意对于查询的的列是字符串,要加上引号,不然不会用到索引。

    对于 or 分隔开的条件,如果or 前面的列中有索引,而后面的列中没有索引,则不会用到索引。

    对于插入操作

    尽量使用多个值表的insert语句,这种方式大大减少客户端与数据库的连接,关闭等操作。

    避免使用子查询,用效率更高的join,join 效率更高是因为mysq不需要再内存中创建临时表

    优化分页

  • 相关阅读:
    好物推荐,码出高效
    C#设置session过期时间
    [C#] Request.QueryString()测试:用html而非asp控件实现简单登录验证并保存值到Session中
    .aspx页面 用html按钮传送数据到 .aspx.cs后台的和“利用Ajax连接aspx与aspx.cs”方法记录
    Visual Studio出现“ 激活远程语言服务器 c#/Visual Basic 语言服务器客户端出错”请运行devenv/log并检查…………“错误解决办法
    解决ubuntu server下屏幕显示不全问题的详解
    关于ubuntu选择desktop版本还是sever版本的一篇随笔
    MAC系统npm安装依赖,报错npm ERR! code ECONNREFUSED
    Linux 常用命令总结
    Mac电脑查询IP
  • 原文地址:https://www.cnblogs.com/yuyang26/p/7892750.html
Copyright © 2011-2022 走看看