zoukankan      html  css  js  c++  java
  • Mysql索引,有哪几种索引,什么时候该(不该)建索引;SQL怎么进行优化以及SQL关键字的执行顺序

    索引Index)是帮助MySQL高效获取数据的数据结构。提取句子主干,就可以得到索引的本质:索引是数据结构

    1、按照索引列值的唯一性,索引可分为唯一索引和非唯一索引

      非唯一索引B树索引

      create index 索引名 on 表名(列名) tablespace 表空间;

      唯一索引:建立主键或者唯一约束时会自动在对应的列上建立唯一索引

    2、索引列的个数:单列索引和复合索引

    3、按照索引列的物理组织方式

      B树索引

      create index 索引名 on 表名(列名) tablespace 表空间;

      位图索引

      create bitmap index 索引名 on 表名(列名) tablespace 表空间;

      反向键索引

      create index 索引名 on 表名(列名) reverse tablespace 表空间名;

      函数索引

      create index 索引名 on 表名(函数名(列名)) tablespace 表空间名;

    运用索引的条件

    1、较频繁地作为查询条件的字段

    2、唯一性太差的字段不适合建立索引

    3、更新太频繁地字段不适合创建索引

    4、不会出现在where条件中的字段不该建立索引

    SQL优化

    1、避免使用select * ,而是具体指出选择哪些列

    2、SQL大小写,数据库在解析sql时,先把SQL语句转换为大写,再进行解析操作,所以建议直接提供大写的SQL语句。

    3、过滤时,>和>=,使用>=优先,如a>2000和a>=2001,这样可以避免过滤2000和2001之间的小数,可以调高效率

    4、where子句中,不等于判断会使索引失效。

    5、where子句中,对列做运算,例如,加减乘除,会使索隐列失效。所以尽量不要在索隐列上做操作。

    6、模糊查询时,like "%abc%",前模糊会导致索引失效,后模糊不会导致索引失效。

    SQL Select语句完整的执行顺序

    1from子句组装来自不同数据源的数据;
    2where子句基于指定的条件对记录行进行筛选;
    3group by子句将数据划分为多个分组;
    4、使用聚集函数进行计算;
    5、使用having子句筛选分组;
    6、计算所有的表达式;
    7、使用order by对结果集进行排序。
    8select 集合输出。

  • 相关阅读:
    20155327 2016-2017-3 《Java程序设计》第4周学习总结
    Hadoop常见错误解决
    正则表达式30分钟入门教程
    Java并发之CopyOnWriteArrayList
    web.xml加载顺序
    详解@Autowired、@Qualifier和@Required
    Java HashMap的死循环
    Redis学习手册(服务器管理)
    Redis介绍及常用命令
    Cron表达式
  • 原文地址:https://www.cnblogs.com/liuqing576598117/p/10594943.html
Copyright © 2011-2022 走看看