Mysql优化反刍

Sql优化

【1】核心作用:提高查询效率

【2】四大分类:Primary,index,uniquer,fulltext

       -主键和外键自带索引,且往往只能有一个

       -唯一索引可有多个

       -常规索引:快速定位特定数据!——不宜添加太多的常规索引,会影响数据的写效率。【一般在字段量的1/4】

       -全文索引:针对例如:like %xxx%  [vachr,char,等大数据字符串] \类似分词【搜索引擎中】   只有MyISAM能用, 【5.6之前】;5.6后支持InnerDB.——默认对英文生效,中文通常是无效的。【+支持安装插件】

【3】索引准则

       -Mysql等数据库的索引本质也是一张表

       -MyISAM的索引文件仅仅保存数据记录的地址——非聚集索引,索引与数据是分开的,每一条数据对应一个索引   【主索引唯一,辅助索引运行不唯一】

       -InnerDB:聚集索引,数据与索引为一体

       -InnoDB采用自增字段做表的主键——保证有序——即:主键索引查询高效,辅助索引查询2次,只先通过辅助找到主键,然后通过主键定位

【4】B-tree:检索

       -

【5】执行计划

       -研究查询效率。依靠数据本身的sql优化器,建立依次查询的计划或步骤。——该过程不可控,可以通过执行计划观察,根据执行计划调整查询的方式和方法,使得查询效率尽可能最优

       -查询效率影响因素:数据量,数据的倾斜。

       -Explaiin + sql语句 :通过输出结果来优化。

           -id:相同,则自上而下;不同,则由大到小

           -select_type: 简单查询,不建立执行计划;primary,subquery,union,同理查询顺序同id

         -type访问类型,最重要,关键,有价值的结果,优化查询结果的指标  +【rows , filtered】次之

                  -直接命中主键,效率最高【InnoDB中,推荐+主键】

            -sql优化器——对数据库管理系统的国产化,底层的引擎!--只能逆向工程,反推大概是什么样子!&&&正面直接建立模型的基础研究的投入!

                  -索引最好是等值判断;对于 经常做非等值判断的,不要去建索引!

                  -index:全表扫描-主键;All:非主键的全表扫描

                  -Type:参考指标;但是:type不是唯一决定因素!+【rows+filrtered】+【执行时间】的综合效率

                  -rows越小越好,filtered越大越好

       -

       -补充:union 去重 ;union all 查询所有数据 ??——具体应用实力

数据库优化策略:背诵记忆

【1】索引、数q据本身、日常维护、使用方式:主键索引,未必慢于其他辅助索引

【2】影响效率的因素:

       -全表扫描:索引失效是会引起全表扫描的一个关键因素。【尽可能让索引生效!】

       -

       -

【3】索引失效情况

       -

       -索引从左往右;非索引从右往左

       -

【4】where语句优化

       -

表的设计

【1】大表:尽可能少关联

【2】小表:用户登录表,用户明细表。

【3】尽可能避免子查询和临时试图;建议使用:缓存!尤其是对数据结构有很大影响。

【4】外键建索引,但是不要加约束

【5】

创建和使用索引


Mysql事务管理和锁

原文地址:https://www.cnblogs.com/macro-renzhansheng/p/13113943.html