入门数据库Days8

目录

 自增长

修改默认的自增长初始值 

索引优化

索引机制

索引的类型

1.主键索引

 2.唯一索引

 3.普通索引

 4.全文索引

索引的使用

创建索引

 删除索引

查询索引 

 自增长

在某张表中,存在一个id列(整数) ,我们希望在添加记录的时候,该列从1开始,自动的增长

先创建一个t34表


CREATE TABLE t34(
	id INT PRIMARY KEY AUTO_INCREMENT,
	email VARCHAR(32) NOT NULL DEFAULT ' ',
	`name` VARCHAR(32) NOT NULL DEFAULT ' ');

添加数据:

INSERT INTO t34
	VALUES(NULL,'tom.com','tom');
INSERT INTO t34
	(email,`name`) VALUES('hsp.com','hsp');
	

 这里第二行的id->2是自动加的(自增长)

使用细节:

  1. 一般来说自增长是和primary key 配合使用的
  2. 自增长也可以单独使用[但是需要配合一个unique]
  3. 自增长修饰的字段为整数型的(虽然小数也可以但是非常非常少这样使用)
  4. 自增长默认从1开始,你也可以通过如下命令修改alter table 表名 auto_increment =新的值
  5. 如果你添加数据时,给自增长字段(列)指定的有值,则以指定的值为准,如果指定了自增长,一般来说,就按照自增长的规则来添加数据

修改默认的自增长初始值 

ALTER TABLE t33 AUTO_INCREMENT =100
CREATE TABLE t33(
	id INT PRIMARY KEY AUTO_INCREMENT,
	email VARCHAR(32) NOT NULL DEFAULT ' ',
	`name` VARCHAR(32) NOT NULL DEFAULT ' ');
	
INSERT INTO t33
	VALUES(NULL,'tom.com','tom');
INSERT INTO t33
	(email,`name`) VALUES('hsp.com','hsp');	
SELECT *  FROM t33;

 

 

如果给第二条默认值改为666,则第二行是从666开始自增长(666优先级高一些),第三行一般情况就会是667 

索引优化

说起提高数据库性能,索引是最物美价廉的东西了。不用加内存,不用改程序,不用调sql,查询速度就可能提高百倍千倍。

加入数据库里有800万个数据,在没有创建索引时,查询一条记录需要的时间相对来说比较长

由于得创建太多数据来演示一个例子不太方便,这里作为笔记直接记方法

如果查询emp数据库的数据empno,用索引的方法

先创建一个索引empno_index

CREATE INDEX empno_index ON emp(empno)
SELECT * FROM emp
	WHERE empno=12345678;

然后写第二个语句即可

注意:

  • 索引本身会占用空间
  • 创建索引后,只对创建了索引的列有效

索引机制

例如在这个表里查找id为1的数据,就算第一遍查找到了还是得继续查找,因为后面也可能有也可能没有,在没有创建索引的条件下查询很费时间。

如果创建了索引,就相当于一个在二叉搜索树里去查找

 索引的代价:

  • 磁盘占用(上面提到过)
  • 对dml(update delete insert)语句的效率影响

索引的类型

1.主键索引

主键索引:主键自动的为主索引

 

 

 2.唯一索引

 3.普通索引

 第二种

 4.全文索引

全文索引(FULLTEXT)[适用于MylSAM]

开发中考虑使用:全文搜索 Solr 和  ElasticSearch (ES)

索引的使用

创建索引


CREATE TABLE t55
	( id INT,
	`name` VARCHAR(32));
-- 添加索引
-- 添加唯一索引

CREATE UNIQUE INDEX id_index ON t55(id);
SHOW INDEXES FROM t55;

这里的0代表否,非唯一索引吗->否,代表有唯一索引

 如何选择?

  1. 如果某列的值,是不会重复的,则优先考虑使用unique索引,否则使用普通索引

 删除索引

 

 删除主键索引不用指定是哪一列,因为一张表最多一个主键索引

修改索引是先删除,在添加新的列

查询索引 

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

  1. 较频繁的作为查询条件字段应该创建索引     select * from emp where empno=1
  2. 唯一性太差的字段不适合单独创建索引,即使频繁作为查询条件    select * from emp where sex=`男`
  3. 更新非常频繁的字段不适合创建索引
  4. 不会出现在WHERE子句中字段不该创建索引

以上为今天的视频笔记,如有侵权请联系我删除.

学习如逆水行舟,不进则退。和小吴一起加油吧!

  • 8
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

小吴有想法

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值