• MySQL 索引


    索引高效查询

    (一)概念

    1. 索引是一种特殊的文件,它们包含着对数据表里所有记录的引用指针。更通俗的说,数据库索引好比是一本书前面的目录,能加快数据库的查询速度
        
        
        桑拿房中钥匙
    
    
    

    (二)索引的分类

    1. 普通索引 :仅加速查询 
    2. 唯一索引 :加速查询 + 列值唯一(可以有null) 
    3. 组合索引 :多列值组成一个索引, 
    4. 主键索引:加速查询 + 列值唯一 + 表中只有一个(不可以有null)
    
    

    (三)索引的创建

    1. 普通索引的创建
    (1)创建表的时候创建索引 
    语法:		
    CREATE TABLE tbl_name(
    	字段名称 字段类型 [完整性约束条件],
    	....
     	INDEX [索引名称](字段名称)
    );
    
    (2) 在已经存在的表上创建索引: 
    语法:
    	1.CREATE INDEX 索引名称 ON 表名(字段名)
    	2.ALTER TABLE 表名 ADD INDEX 索引名称(字段名称);
    
    (3)查看索引
    	show index from 表名;
    
    (4) 删除索引 
    	drop index 索引名 on 表名;
    
    2.唯一索引的创建
    (1) 创建表的时候创建唯一索引 
    create table 表名(
     nid int not null auto_increment primary key,
     name varchar(32) not null,
     email varchar(64) not null,
     extra text,
     -- 把name设置为唯一索引,名称为ix_name
     unique ix_name (name)
    )
    
    (2)在已经存在的表上创建唯一索引: 
    语法:
    	create unique index 索引名 on 表名(列名)
    
    (3)删除唯一索引
    	语法 :drop index 索引名 on 表名
    

    1612621198503

    3. 组合索引
    (1)介绍
    	组合索引是将n个列组合成一个索引
    	其应用场景为:频繁的同时使用n列来进行查询,如:where n1 = ‘alex’ and n2 = 666。
    
    (2)组合索引的创建
    	create index 索引名 on 表名(列名1,列名2...);
    

    image

    4. 主键索引
    主键是索引也是约束,创建和删除方式跟我们之前学习创建和删除主键约束的方式一致;
    
    5.哪些情况需要创建索引
    1. 主键自动建立唯一索引,任何表一定要建主键
    2. 频繁作为查询条件的字段应该创建索引
    3. 查询中与其它表关联的字段,外键关系建立索引
    4. 组合索引的选择问题, 组合索引性价比更高(最左原则)
    5. 查询中排序的字段,排序字段若通过索引去访问将大大提高排序速度
    6. 查询中统计或者分组字段
    7. 数据量大的表格
    
    
    6.使用索引注意事项
    1. 不在索引列上做任何操作(计算、函数、(自动or手动)类型转换),会导致索引失效而转向全表扫描
    2. mysql 在使用不等于(!= 或者<>)的时候无法使用索引会导致全表扫描
    3. is not null 也无法使用索引,但是is null是可以使用索引的
    4. like以通配符开头('%abc...')mysql索引失效会变成全表扫描的操作
    
    
    
    
  • 相关阅读:
    python保护变量(_),私有变量(__),私有方法,
    避免在循环体中创建对象
    HashMap的初始容量(initialCapacity)和装载因子(loadFactor)
    深入理解Java的接口和抽象类
    关于◎SuppressWarnings("unchecked")
    缓存技术PK:选择Memcached还是Redis?
    Maven详解之聚合与继承
    浅谈redis和memcached的区别
    《玩转Spring》第二章 BeanPostProcessor扩展
    使用Spring实现读写分离( MySQL实现主从复制)
  • 原文地址:https://www.cnblogs.com/conglingkaishi/p/15215457.html
Copyright © 2020-2023  润新知