mysql索引

2015-12-02 22:25:00
admin
原创 969
摘要:mysql索引

一、测试准备

drop table if exists Student;
create table Student(
id int NOT NULL KEY auto_increment,
create_time varchar(32)
);
drop table if exists KeyTest;
create table KeyTest(
id int NOT NULL KEY auto_increment,
name varchar(32),
cardNo varchar(32),
studentNo int
);
普通索引:
create index idx_KeyTest_name on KeyTest(name);
唯一索引:
create unique index idx_KeyTest_cardNo on KeyTest(cardNo);
外键:
alter table KeyTest add CONSTRAINT fk_studentNo FOREIGN KEY (studentNo) REFERENCES Student(id);

查看索引:

show create table KeyTest;

show index from KeyTest;

insert KeyTest(id,name) values(NULL, 'feinen');
insert KeyTest(id,name) values(NULL, 'bao');


auto_increment默认从1开始:

show variables like 'auto_inc%';

auto_increment_increment 1

auto_increment_offset 1


二、索引使用场景

1 where

2 join on

3 操作符:<、<=、=>、>=、between in

4 不以%开头的like操作


三、单列索引和多列索引

单列索引只对第一个索引字段使用索引表,后面的字段使用排序法;

多列索引通过查询索引表就可以查找到具体内容,只需要扫描一条记录;


四、索引类型

普通索引

唯一索引,比普通索引增加了唯一约束

主键,比唯一索引增加NOT NULL约束,每个表只能有一个主键

外键,可以为NULL,用于约束和其它表的关系


1 索引用于提高查询速度;

2 主键和外键用于保证完整性;


五、关于index_type

MyISAM:BTREE
InnoDB:BTREE
MEMORY/HEAP:HASH、BTREE
NDB:BTREE、HASH


NDB是分布式数据库存储引擎,存储引擎默认使用支持的第一个索引类型;


六、性能测试代码

verify_create_index.py

发表评论
评论通过审核之后才会显示。