zoukankan      html  css  js  c++  java
  • 关于MySQL索引的一点小见解

    索引:

      优缺点:

          1.用的合理可以提高查询效率

          2.建立过多索引会占用物理和数据空间,同时也会降低插入和更新效率

      需不需要建立索引:

          1.一般表的数据低于2000条就不用建立索引了,超过2000条酌情考虑

          2.选择性太低,即指不重复的索引值,其值越大,建索引的价值就越高,计算方法如下(假设name为user表的一个字段):

            SELECT count(DISTINCT(name))/count(*) AS Selectivity FROM user;

      索引的优化(使用explain来查看索引的使用情况 ex:explain select * from user where name="cat"):

          mysql> explain select * from tb_animal where name="cat" and age=12 and type="mao"G;

          *************************** 1. row ***************************

                       id: 1

            select_type: SIMPLE

                   table: tb_animal

               partitions: NULL  

                      type: ref

           possible_keys: indexNameAgeType

                       key: indexNameAgeType

                 key_len: 98

                     ref: const,const,const

                    rows: 1

                 filtered: 100.00

                   Extra: NULL

         1.联合索引全值匹配效率会高些

        2.最佳左前缀法则

        3.索引上尽量少计算:计算函数,类型转换等会导致全表扫描

        4.范围之后的索引就会全失效:可以用>=代替>

        5.避免写*,尽量使用具体的字段

        6.MySQL使用不等于,is null ,is not null等无法使用索引

        7.like 模糊匹配时写最右  "like" 

        8.少用or连接,可以用in来代替

        9.使用InnoDB存储引擎时,如果没有特别的需要,永远使用一个与业务无关的自增字段作为主键

        10.多使用内部函数提高查询效率:例如使用mysql的concat()函数会比使用||来进行拼接快,因为concat()函数已经被mysql优化过了


     

  • 相关阅读:
    高级特性(4)- 数据库编程
    UVA Jin Ge Jin Qu hao 12563
    UVA 116 Unidirectional TSP
    HDU 2224 The shortest path
    poj 2677 Tour
    【算法学习】双调欧几里得旅行商问题(动态规划)
    南洋理工大学 ACM 在线评测系统 矩形嵌套
    UVA The Tower of Babylon
    uva A Spy in the Metro(洛谷 P2583 地铁间谍)
    洛谷 P1095 守望者的逃离
  • 原文地址:https://www.cnblogs.com/maoaji/p/8519671.html
Copyright © 2011-2022 走看看