Mysql自增长和索引基本使用以及细节

目录

Mysql自增长

自增长使用细节

Mysql索引

索引原理

实例:

索引的类型

索引使用

 查询索引

小结: 哪些列上适合使用索引


Mysql自增长

语法

字段名 整形 PRIMARY KEY AUTO_INCREMENT

实例

CREATE TABLE t24(
	id INT PRIMARY KEY AUTO_INCREMENT,
	email VARCHAR(32) NOT NULL DEFAULT ' ',
	`name` VARCHAR(32) NOT NULL DEFAULT ' '
);
INSERT INTO t24
	VALUES(NULL,'mike@qq.com','mike')
SELECT * FROM t24

INSERT INTO t24
	VALUES(NULL,'mike@qq.com','mike')
SELECT * FROM t24
INSERT INTO t24
	VALUES(NULL,'jack@qq.com','jack')
INSERT INTO t24
	VALUES(4,'lili@qq.com','lili')
INSERT INTO t24
	VALUES(NULL,'mon@qq.com','mon')
INSERT INTO t24(email,`name`)
	VALUES('jack@qq.com','jack')

如上面所示代码可知

1. 当AUTO_INCREMENT字段插入值为NULL时,系统会自行录入

2. 若输入的值不是NULL也是可以的,但在下次输入值为NULL时,系统会根据上条记录的值进行自增长

3. 输入时可以指输入其他字段的值,系统不会报错,不再id字段进行自增长

自增长使用细节

1. 一般来说自增长是和primary key 配合使用的

2. 自增长也可以单独使用[但是需要配合一个unique](id INT UNIQUE AUTO_INSERMENT)

3. 自增长修饰的字段为整数型的(虽然小数也可以但是非常非常少这样使用)
4. 自增长默认从 1开始,你也可以通过如下命令修改   alter table表名auto increment = xxx;

5. 如果你添加数据时,给自增长字段(列)指定的有值,则以指定的值为准,如果指定了自增长,一般来说,就按照自增长的规则来

Mysql索引

索引原理

索引其实就是对表中所有的记录进行相应的编号,并用二叉树算法进行排序,一边更加快速地查询数据,在没有创建索引之前,对数据的查询是对表的每个记录进行逐条对比来找到符合的记录,即使查询的数据比较靠前(哪怕是第一条),也会向后进行查询,直到整张表遍历完为止

实例:

如图所示创建一条具有八百万条记录的表emp

在没有创建索引前emp这张表总共有524mb

现在进行查询操作

SELECT * 
	FROM emp
	WHERE ename = 'axJxCTs'

如图可知,查询时长为3.7s

现在在emp的empno字段上创建索引

create index empno_index on emp(empno)

如图可知,现在的文件为655mb,索引也占用了一定的空间

现在进行查询操作

SELECT * 
	FROM emp
	WHERE ename = 'axJxCTs'

如图可知通过索引使查询速度提升(0.001s)

索引的类型

1. 主键索引,主键自动的为主索引(类型Primary key)

2. 唯一索引(UNIQUE)

3. 普通索引(INDEX)

4. 全文索引(FULLTEXT)[适用于MyISAM]

索引使用

1. 添加索引(建小表测试 id,name)

create [UNIQUE] index index_name on tbl_name (col_ name [(length)][ASC | DESC],......);


alter table table_name ADD INDEX [index name] (index_col_name,....)

2. 添加主键(索引)

ALTER TABLE 表名 ADD PRIMARY KEY(列名...);

3. 删除索引

DROP INDEX index_name ON tbl_name

alter table table_name drop index index_name;

4. 删除主键索引 比较特别

 alter table tbl_name drop primary key;

实例:

创建表

create table t(
	id int,
	`name` varchar(32)
);

添加唯一索引

CREATE UNIQUE INDEX id_index ON t(id)

查询表是否有索引

show indexes from t

如图所示:表中Non_unique字段值若为0,则代表被添加的字段索引为唯一索引,若为1,则为普通索引

创建表

CREATE TABLE tt(
	id INT,
	`name` VARCHAR(32)
);

添加主键索引

alter table tt add primary key(id)
SHOW INDEXES FROM tt

 删除索引

drop index id_index on t
show indexes from t

 删除主键索引

ALTER TABLE tt DROP PRIMARY KEY

 查询索引

方式一:

show indexes from table_name

方式二:

show index from table_name

方式三:

show keys from table_name
SHOW KEYS FROM t
SHOW KEYS FROM tt

 

方式四:

desc table_name
DESC t
DESC tt

 

小结: 哪些列上适合使用索引

1. 较频繁的作为查询条件字段应该创建索引
select *from emp where empno =1

2. 唯一性太差的字段不适合单独创建索引,即使频繁作为查询条件
select * from emp where sex='男

3. 更新非常频繁的字段不适合创建索引

select *from emp where logincount = 1

4. 不会出现在WHERE子句中字段不该创建索引

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值