• 2.2mysql 索引优化


    5.索引优化

    5.1索引分析
        5.1.1单表
        
        
        5.1.2两表
                        

                         

                          

           5.1.3三表
                        

                          

                          

    5.2索引失效(应该避免)  
                5.2.1 建表SQL
                       
    5.2.2 案例(索引失效)
                        5.2.2.1        全值匹配我最爱 
                                        
    5.2.2.2      最佳左前缀法则*  ==如果索引了多列,要遵守最左前缀法则。指的是查询从索引的嘴左前列开始并且不跳过索引中的列 带头大哥不能死
                                        
    5.2.2.3        不在索引列上做任何操作(计算、函数、(自动or手动)类型转换),会导致索引失效而转向全表扫描
                                       
    5.2.2.4        存储引擎不能使用索引中范围条件右边的列
                                        
    5.2.2.5        尽量使用覆盖索引(只访问索引的查询(索引列和查询列一致)),减少select*
                                        

    5.2.2.6        mysql在使用不等于(!=或者<>) 的时候无法使用索引会导致全表扫描
                                        
    5.2.2.7        is null,is not null 也无法使用索引
                                        
    5.2.2.8        like以通配符开头('%abc...')mysql索引失效会变成全表扫描的操作 
                                        
    *问题:解决like‘%字符串%’时索引不被使用的方法??                                
                                        

                                      
                                        覆盖索引解决问题
                                        注意:创建的索引字段 假如只有两个 ,用这两个字段去查询   
                                              ***例如:
                                                    index (a,b)
                                                    select a,b from A
                                                    select a,b,c from  A   索引会失效 因为多了没建索引的字段
                        5.2.2.9        字符串不加单引号索引失效
                                       
    5.2.2.10    少于or,用它来连接时会索引失效
                                       
    5.2.2.11    小总结    
                                       
    5.2.3 面试题讲解
                        a.题目
                           

     

                        b.定值、范围还是排序,一般order by是给个范围
                        c.group by基本上都需要进行排序,会有临时表产生
    5.3一般性建议 
             5.3.1     对于单键索引,尽量选择针对当前query过滤性更好的索引
                5.3.2    在选择组合索引的时候,当前Query中过滤性最好的字段在索引字段顺序中,位置越靠前越好
                5.3.3    在选择组合索引的时候,尽量选择可以能够包含当前query中的where子句中更多字段的索引
                5.3.4    尽可能通过分析统计信息和调整query的写法来达到选择合适索引的目的
                
                
                
    
                全值匹配我最爱,最左前缀要遵守
                带头大哥不能死,中间兄弟不能断
                索引列上少计算,范围之后全失效
                LIKE百分写最右,覆盖索引不写星
                不等空值还有or,索引失效要少用
                VAR引号不可丢,SQL高级也不难
  • 相关阅读:
    NodeJS 实现阿里云推送。
    ReactJS 页面跳转保存当前scrollTop回来时,自动移动到上次浏览器的位置
    移动端刷新组件XtnScroll--Angular4实现
    Angular4+NodeJs+MySQL 入门-06 接口配置
    Angular4+NodeJs+MySQL 入门-05 接口调用
    Angular4+NodeJs+MySQL 入门-04 接口调用类
    Angular4+NodeJs+MySQL 入门-03 后台接口定义
    Angular4+NodeJs+MySQL 入门-02 MySql操作类
    Angular4+NodeJs+MySQL 入门-01
    ionic 开发当中,有一些常用的方法。
  • 原文地址:https://www.cnblogs.com/JBLi/p/11502336.html
Copyright © 2020-2023  润新知