MySQL索引、视图

什么是索引

汉语字典中的汉字按页存放,⼀般都有汉语拼音目录(索引)、偏旁部首目录等
我们可以根据拼音或偏旁部首,快速查找某个字词

理解索引

首先:先假设有⼀张表,表的数据有10W条数据,其中有⼀条数据是name=’newdream‘,如果要拿这条数据的话需要些的sql是

SELECT * FROM stu WHERE name= ’newdream'

⼀般情况下,在没有建立索引的时候,mysql需要扫描全表及扫描10W条数据找这条数据,如果在name字段上建立索引,那么mysql只需要扫描⼀⾏数据及为我们找到这条name=’newdream‘的数据,这样的情况下查询的速度会要提⾼很多

索引关键字的选取原则

索引的设计往往需要⼀定的技巧,掌握了这些技巧,可以确保索引能够⼤幅地提升数据检索效率,弥补索引在数据更新⽅面带来的缺陷。

原则1:表的某个字段值离散度越⾼,该字段越适合选作索引的关键字。
原则2:占用储存空间少的字段更适合选作索引的关键字。
原则3:较频繁地作为where查询条件的字段应该创建索引,分组字段或者排序字段应该创建索引,两个表的连接字段应该创建索引。
原则4:更新频繁的字段不适合创建索引,不会出现在where⼦句中的字段不应该创建索引。
原则5.最左前缀原则
原则6.尽量使用前缀索引

创建索引

索引的种类:

  • 主索引、聚簇索引
  • 唯⼀性索引
  • 普通索引
  • 复合索引
  • 全⽂索引(fulltext)

⽅法⼀:创建表的同时创建索引

create table 表名(	
字段名1 数据类型 [约束条件],	
…	
[其他约束条件],	
…	
[ unique | fulltext ] index [索引名]	( 字段名 [(长度)] [ asc | desc ] )	
) engine=存储引擎类型 default charset=字符集类型

create table book(	
isbn char(20) primary key,	
name char(100) not null,	
brief_introduction text not null,	
price decimal(6,2),	
publish_time date not null,	
unique index isbn_unique (isbn),	
index name_index (name (20)),	
fulltext index brief_fulltext
(name,brief_introduction),	
index complex_index	(price,publish_time)	
)engine=MyISAM default charset=gbk;

⽅法⼆、在已有表上创建索引

语法格式⼀:
create [ unique | fulltext ] index 索引名 on 表名 ( 字段名 [(长度)] [ asc | desc ] )	

语法格式⼆:
alter table	表名 add [ unique | fulltext ] index 索引名
( 字段名 [(长度)] [ asc | desc ] )

使用索引

使用索引的语法格式如下。

select studentid,score
from score use index(index_stuid)		
where studentid>=3;

删除索引

删除索引的语法格式如下。

drop index 索引名 on 表名

视图

视图与表有很多相似的地⽅,视图也是由若⼲个字段以及若⼲条记录构成,视图也可以作为select语句的数据源。甚⾄在
某些特定条件下,可以通过视图对表进⾏更新操作。

视图中保存的仅仅是⼀条select语句,视图中的源数据都来自于数据库表,数据库表称为基本表或者基表,视图称为虚表。

创建视图

创建视图的语法格式如下。

create view 视图名 [	(视图字段列表) ] as select语句

视图的作用

1.使操作变得简单
2.避免数据冗余
3.增强数据安全性
4.提⾼数据的逻辑独立性

删除视图

如果某个视图不再使用,可以使用drop view语句将该视图删除,语法格式如下。

drop view 视图名
posted @ 2019-12-01 08:00  心脏鼓点  阅读(276)  评论(0编辑  收藏  举报