• MySQL_1.基础—14.索引


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

    • 索引的分类

      - 主键索引
        - PRIMARY KEY 唯一的标识,主键不可重复,只能有一个
      - 唯一索引
        - UNIQUE KEY 避免重复的列出现。唯一索引可以重复,多个列都可以标识为唯一索引。
      - 常规索引
        - KEY/INDEX 默认的,关键字来设置
      - 全文索引
        - FullText 在特定的数据库引擎下才有,MyISAM。快速定位数据
      
    • 实例演示

      # 创建一个有索引的表
      
      CREATE TABLE IF NOT EXISTS `student` (
        `StudentNo` INT(4) NOT NULL AUTO_INCREMENT COMMENT '学号',
        `passwd` VARCHAR(20) NOT NULL COMMENT '密码',
        `name` VARCHAR(30) NOT NULL DEFAULT '匿名' COMMENT '姓名',
        `sex` CHAR(1) NOT NULL DEFAULT '女' COMMENT '性别',
        `birthday` DATETIME DEFAULT NULL COMMENT '生日',
        `gradeid` INT(10) NOT NULL COMMENT '学生id',
        `address` VARCHAR(100) DEFAULT NULL COMMENT '住址',
        `Email` VARCHAR(50) DEFAULT NULL COMMENT '邮箱',
        `IdentityCard` VARCHAR(18) DEFAULT NULL COMMENT '身份证号',
        PRIMARY KEY (`StudentNo`), 
        UNIQUE KEY `IdentityCard` (`IdentityCard`),
        KEY `Email` (`Email`)
      )ENGINE=INNODB DEFAULT CHARSET=utf8 comment='学生表';
      
      # 查看索引信息
      SHOW INDEX FROM student;
      
      # 增加一个全文索引
      ALTER TABLE `student` ADD FULLTEXT INDEX `name`(`name`);
      
      # explain分析sql的执行情况
      explain select * from student;
      explain select * from student where match(`name`) against('刘');
      
    • 创造百万数据做测试

      delimiter &&     -- 写函数之前必须要写,标志
      
      create function mock_data()
      return int
      begin
        declare num int default 1000000;
        declare i int default 0;
        
        while i<num do
             -- 插入语句
             set i=i+1;
        end while
      end;
      
      insert into app_user(`字段1`,'字段2'...) values(concat('用户',i),'xxx@qq.com')
      
      # 没整理完 回头研究这个
      
    • 索引的原则

      - 索引不是越多越好
      - 不要对经常变动数据加索引
      - 小数据量的表不需要加索引
      - 索引一般加在常用来查询的字段上
      
    • 索引的数据结构

      - Hash类型的索引
      - Btree: InnoDB的默认数据结构
      
  • 相关阅读:
    django文件上传
    django验证码
    auth模块---笔记
    css笔记
    django模板系统---2
    django模板系统
    Django中间件
    前端笔记---1
    我的django笔记---1
    DNS服务器的搭建
  • 原文地址:https://www.cnblogs.com/FGdeHB/p/15779591.html
Copyright © 2020-2023  润新知