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

      1.尽量全值匹配 

          

           联合索引   

           当建立了索引列后,能在wherel条件中使用索引的尽量所用。

       2.最佳左前缀法则

          如果索引了多列,要遵守最左前缀法则。指的是查询从索引的最左前列开始并且不跳过索引中的列。

        

         让索引不失效的一个策略  

           火车头 火车身 火车尾 

        

      3.不在索引列上做任何操作

           不在索引列上做任何操作(计算、函数、(自动or手动)类型转换),会导致索引失效而转向全表扫描

          

       4.范围条件放最后

      

           中间有范围查询会导致后面的索引列全部失效

       5.覆盖索引尽量用

       

             尽量使用覆盖索引(只访问索引的查询(索引列和查询列一致)),减少select *

       

        6.不等于要甚用

      mysql 在使用不等于(!= 或者<>)的时候无法使用索引会导致全表扫描

      

       如果定要需要使用不等于,请用覆盖索引

       7.Null/Not 有影响

         自定义为NOT NULL

                

                

                在字段为not null的情况下,使用is null is not null 会导致索引失效

        解决方式:覆盖索引

              EXPLAIN select  name,age,pos from staffs where name is not null

             

           自定义为NULL或者不定义

        

            EXPLAIN select * from staffs2 where name is null

            

            EXPLAIN select * from staffs2 where name is not null

            

            Is not null 的情况会导致索引失效 

    解决方式:覆盖索引

    EXPLAIN select  name,age,pos from staffs where name is not null

     

      8.Like查询要当心

      like以通配符开头('%abc...')mysql索引失效会变成全表扫描的操作

       

             解决方式:覆盖索引

    EXPLAIN select name,age,pos from staffs where name like '%july%'

     

        9.字符类型加引号

     字符串不加单引号索引失效

      EXPLAIN select * from staffs where name = 917 

    解决方式:请加引号

      

      10.ORUNION效率高

     

      EXPLAIN

    select * from staffs where name='July' or name = 'z3'

     

     

    EXPLAIN

    select * from staffs where name='July'

    UNION

    select * from staffs where  name = 'z3'

     

    解决方式:覆盖索引

    EXPLAIN

    select name,age from staffs where name='July' or name = 'z3'

        

     

      insert语句优化;

     提交前关闭自动提交

        尽量使用批量insert语句

        可以使用MyISAM存储引擎

     LOAD DATA INFLIE

    LOAD DATA INFLIE;

    使用LOAD DATA INFLIE ,比一般的insert语句快20倍

    select * into OUTFILE 'D:\product.txt' from product_info

    load data INFILE 'D:\product.txt' into table product_info

  • 相关阅读:
    关于在MAC上进行 LARAVEL 环境 Homestead 安装过程记录
    js 贷款计算器
    js 实现阶乘
    js 两点间距离函数
    composer Your requirements could not be resolved to an installable set of packages
    vue 项目优化记录 持续更新...
    vue 项目打包
    vue 真机调试页面出现空白
    vue 真机调试
    谈谈-Android状态栏的编辑
  • 原文地址:https://www.cnblogs.com/qin1993/p/12122890.html
Copyright © 2011-2022 走看看