zoukankan      html  css  js  c++  java
  • mysql之索引方面的知识点总结

    索引的类型:

    普通索引:这是最基本的索引类型,没唯一性之类的限制。

    唯一性索引:和普通索引基本相同,但所有的索引列只能出现一次,保持唯一性。

    主键:主键是一种唯一索引,但必须指定为"PRIMARY KEY"

    全文索引:全文索引的索引类型为FULLTEXT。全文索引可以在VARCHAR或者TEXT类型的列上创建。

    索引的操作

    使用ALTER TABLE语句创建索引。

    alter table table_name add index index_name (column_list) ;

    alter table table_name add unique (column_list) ;

    alter table table_name add primary key (column_list) ;

    使用CREATE INDEX语句对表增加索引。

    create index index_name on table_name (column_list) ;

    create unique index index_name on table_name (column_list) ;

    删除索引

    drop index index_name on table_name ;

    alter table table_name drop index index_name ;

    alter table table_name drop primary key ;

    查看索引

    show index from table_name;

    如何使用索引

    1、在经常进行连接的字段,建立索引

    2、在排序或分组的列上建立索引

    3、在条件表达式中建立所因(where),情况有两种

      不同值较多的列上使用索引,

      不同值较少的列上不适用索引

    4、待排序的列有多个,可以在这些列上建立复合索引

    5、可以建立短索引,例如:

       alter table table_name add index index_name(column_list(length))

       alter table test add index ab(`a`(3));

    6join中出现的列需要建立索引

    注意事项:

    1、索引不会包含有null值的列

    2MySQL查询只使用一个索引,因此如果where子句中已经使用了索引的话,那么order by中的列是不会使用索引的。因此数据 

    库默认排序可以符合要求的情况下不要使用排序操作;尽量不要包含多列的排序,如果需要最好给这些列创建复合索引。

    3、不要在列上进行运算

    4、以通配符%_开头作查询时,mysql不会使用索引。例如:

    会使用索引:SELECT * FROM mytable WHERE username like 'admin%'

    不会使用索引:SELECT * FROM mytable WHERE username like '%admin'

    组合索引

    组合索引的最左优先原则,组合索引的第一个字段必须出现在查询组句中,这个索引才会被用到。

    如果有一个组合索引(col_a,col_b,col_c)

    下面的情况都会用到这个索引:

    col_a = "some value";

    col_a = "some value" and col_b = "some value";

    col_a = "some value" and col_b = "some value" and col_c = "some value";

    col_b = "some value" and col_a = "some value" and col_c = "some value";

    对于最后一条语句,mysql会自动优化成第三条的样子~~

    下面的情况就不会用到索引:

    col_b = "aaaaaa";

    col_b = "aaaa" and col_c = "cccccc";

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

  • 相关阅读:
    ntohs, ntohl, htons,htonl的比较和详解
    转 linux socket的select函数例子
    转 结构体中字节对齐问题(转载)
    C语言中volatile关键字的作用
    转 字符串模式匹配算法——BM、Horspool、Sunday、KMP、KR、AC算法
    转 常见hash算法的原理
    转 从头到尾彻底解析Hash表算法
    [CEOI2020 D2T1 / CF1403A] 权力药水The Potion of Great Power 题解
    [CEOI2020 D1T3 / CF1402C] 星际迷航Star Trek 题解
    [CEOI2020 D1T2 / CF1402B] 道路Roads 题解
  • 原文地址:https://www.cnblogs.com/sustudy/p/4164304.html
Copyright © 2011-2022 走看看