zoukankan      html  css  js  c++  java
  • ✨MySql索引

    MySql中的索引语法

    创建索引

    1 在创建表时创建索引:

    CREATE TABLE mytable(  
        ID INT NOT NULL,   
        username VARCHAR(16) NOT NULL,  
        INDEX [indexName] (username(length))  
    ); 
    

    2在创建表以后添加索引:

    ALTER TABLE my_table ADD [UNIQUE] INDEX index_name(column_name);
    或者
    CREATE INDEX index_name ON my_table(column_name);
    

    在创建索引时,需要对表加锁,创建的索引需要占用磁盘空间。

    2 根据索引查询:

    具体的查询:
    select * from table where column=column;(为column创建了索引)
    
    模糊查询:
    select * from table where colunm like "%a%";
    
    

    3 删除索引

    DROP INDEX my_index ON tablename;
    或者
    ALTER TABLE table_name DROP INDEX index_name;
    

    4 查看表中的索引

    show index from table;
    

    5 查看语句使用索引的情况

    //explain 加查询语句
    explain SELECT * FROM table_name WHERE column_1='123';
    

    索引的优缺点

    优势:可以快速检索,减少I/O次数,加快检索速度;根据索引分组和排序,可以加快分组和排序;

    劣势:索引本身也是表,因此会占用存储空间,一般来说,索引表占用的空间的数据表的1.5倍;索引表的维护和创建需要时间成本,这个成本随着数据量增大而增大;构建索引会降低数据表的修改操作(删除,添加,修改)的效率,因为在修改数据表的同时还需要修改索引表;

    索引的分类

    常见的索引类型有:主键索引,唯一索引,普通索引,全文索引,组合索引

    1 主键索引:即主键索引,根据主键创建的索引,不允许空值,不允许重复。

    2 唯一索引,用来建立索引的列的值必须是唯一的,可以为空

    3 普通索引:用表中普通列建立的索引,没有任何限制

    4 全文索引:用大文本对象的列构建的索引

    5 组合索引:用多个列组合建立的索引,这多个列中的值不允许有重复
    另外:

    *遵循“最左前缀”原则,把最常用作为检索或排序的列放在最左,依次递减,组合索引相当于建立了col1,col1col2,col1col2col3三个索引,而col2或者col3是不能使用索引的。

    *在使用组合索引的时候可能因为列名长度过长而导致索引的key太大,导致效率降低,在允许的情况下,可以只取col1和col2的前几个字符作为索引

    ALTER TABLE 'table_name' ADD INDEX index_name(col1(4),col2(3));

    表示使用col1的前4个字符和col2的前3个字符作为索引

    索引的实现原理

    MySql支持多种存储引擎,而各种存储引擎对索引的支持也不相同,因此,MySql数据库支持多种索引类型,如BTree索引,B+Tree索引,哈希索引,全文索引等。

  • 相关阅读:
    HBase性能调优
    HBase原理和设计
    HBase 架构脑图
    Hadoop
    Hadoop YARN架构设计要点
    Hadoop-YARN
    Hadoop-HDFS
    TCP传输
    分布式系统常见的事务处理机制
    Zookeeper Client简介
  • 原文地址:https://www.cnblogs.com/charlottepl/p/13397812.html
Copyright © 2011-2022 走看看