索引

索引

一、简介

索引在MySQL中也叫做“键”,是存储引擎用于快速找到记录的一种数据结构。索引对于良好的性能非常关键,尤其是当表中的数据量越来越大时,索引对于性能的影响愈发重要。

  • 索引优化应该是对查询性能优化最有效的手段了;
  • 索引能够轻易将查询性能提高好几个数量级;
  • 索引相当于字典的音序表,如果要查某个字,如果不使用音序表,则需要从几百页中逐页去查。

索引特点:创建与维护索引会消耗很多时间与磁盘空间,但查询速度大大提高!

二、语法

#方法一:创建表时
      CREATE TABLE 表名 (
                字段名1  数据类型 [完整性约束条件…],
                字段名2  数据类型 [完整性约束条件…],
                [UNIQUE | FULLTEXT | SPATIAL ]   INDEX | KEY
                [索引名]  (字段名[(长度)]  [ASC |DESC]) 
                );

#-------------------------
#创建普通索引示例:

    CREATE TABLE emp1 (
        id INT,
        name VARCHAR(30) ,
        resume VARCHAR(50),
        INDEX index_emp_name (name)
    --KEY index_dept_name (dept_name)
        );


#创建唯一索引示例:

    CREATE TABLE emp2 (
        id INT,
        name VARCHAR(30) ,
        bank_num CHAR(18) UNIQUE ,
        resume VARCHAR(50),
        UNIQUE INDEX index_emp_name (name)
        );

#创建全文索引示例:

    CREATE TABLE emp3 (
        id INT,
        name VARCHAR(30) ,
        resume VARCHAR(50),
        FULLTEXT INDEX index_resume (resume)
        );

#创建多列索引示例:

    CREATE TABLE emp4 (
        id INT,
        name VARCHAR(30) ,
        resume VARCHAR(50),
        INDEX index_name_resume (name, resume)
        );

#-------------------------------------

#方法二:CREATE在已存在的表上创建索引
        CREATE  [UNIQUE | FULLTEXT | SPATIAL ]  INDEX  索引名 
                     ON 表名 (字段名[(长度)]  [ASC |DESC]) ;

        CREATE INDEX index_emp_name on emp1(name);

#方法三:ALTER TABLE在已存在的表上创建索引
        ALTER TABLE 表名 ADD  [UNIQUE | FULLTEXT | SPATIAL ] INDEX
                             索引名 (字段名[(长度)]  [ASC |DESC]) ;

        ALTER TABLE emp2 ADD UNIQUE INDEX index_bank_num(band_num);
                     
#删除索引:DROP INDEX 索引名 ON 表名字;    
        DROP INDEX index_emp_name on emp1;

三、测试索引

#创建表
create table t1(id int,name varchar(20));

#存储过程

delimiter $$  #声明存储过程的结束符合为$$
create procedure autoinsert() 
BEGIN
declare i int default 1;
while(i<500000)do
insert into t1 values(i,'alex');
set i=i+1;
end while;
END$$  #$$结束

delimiter ;  #重新声明分号为结束符合

#调用函数
call autoinsert();

#花费时间比较:
#创建索引前
   select * from Indexdb.t1 where id=300000;--0.32s
#添加索引 
   create index index_id on Indexdb.t1(id);
#创建索引后
   select * from Indexdb.t1 where id=300000;--0.00s
posted @ 2019-10-17 21:43  流浪代码  阅读(137)  评论(0编辑  收藏  举报