入门数据库Days8

发布于:2022-12-28 ⋅ 阅读:(296) ⋅ 点赞:(0)

目录

 自增长

修改默认的自增长初始值 

索引优化

索引机制

索引的类型

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子句中字段不该创建索引

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

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


网站公告

今日签到

点亮在社区的每一天
去签到