# 视图和索引
- 索引 (Index) 是影响数据性能的重要因素之一,设计高效的、合理的索引可以显著提高数据信息的查询速度和应用程序的性能。
- 视图(View)是一个存储指定查询语句的虚拟表,视图中数据来源于由定义视图所引用的表,并且能够实现动态引用,即表中数据发生变化,视图中的数据随之变化
# 理解索引
MySQL 的索引是为了加速对数据进行检索而创建的一种分散的、物理的数据结构。
索引包含从表或视图中一个或多个列生成的键,以及映射到指定数据行的存储位置指针。
索引是依赖于表建立的,提供了数据库中编排表中数据的内部方法。
表的存储由两部分组成,一部分是表的数据页面,另一部分是索引页面。
索引就存放在索引页面上
# 索引的分类
- 普通索引
- 唯一索引
- 全文索引
- 单列索引
- 多列索引
- 空间索引
# 创建索引的方式
# 在创建表的时候创建索引
CREATE TABLE 表名(字段名 数据类型[完整性约束条件], | |
字段名 数据类型[完整性约束条件], | |
...... | |
字段名 数据类型 | |
[UNIQUE|FULLTEXT|SPATIAL] INDEX|KEY | |
[别名] (字段名1 [(长度)]) [ASC|DESC] | |
); |
例: 在 t1 表中 id 字段上建立索引
例:创建一个表名为 t2 的表,在表中的 id 字段上建立索引名为 unique_id 的唯一性索引,并且按照升序排序
例:创建一个表名为 t3 的表,在表中的 name 字段上建立索引名为 fulltext_name 的全文索引
例:创建一个表名为 t4 的表,在表中的 name 字段上建立索引名为 single_name 的单列索引
例:创建一个表名为 t6 的表,在表中的 id 和 name 字段上建立索引名为 multi 的多列索引
# 使用 CREATE INDEX 语句在已经存在的表上创建索引
CREATE [UNIQUE|FULLTEXT] INDEX 索引名 | |
ON 表名 (字段名 [(长度)] [ASC|DESC]); |
在 book 表中的 bookid 字段上建立普通索引
在 book 表中的 bookid 字段上建立唯一性索引
在 book 表中的 comment 字段上建立单列索引
在 book 表中的 authors 和 info 字段上建立多列索引
# 使用 ALTER TABLE 语句在已经存在表上创建索引
ALTER TABLE 表名 ADD [UNIQUE|FULLTEXT] INDEX 索引名 (字段名 [(长度)] [ASC|DESC]); |
在表中的 bookid 字段上创建普通索引
在表中的 bookid 字段上创建唯一索引
在 book 表中的 comment 字段上建立单列索引
# 删除索引
ALTER TABLE 表名 DROP primary key; | |
ALTER TABLE 表名 DROP INDEX 索引名; | |
ALTER TABLE 表名 DROP FOREIGN KEY fk_symbol; | |
DROP INDEX 索引名 ON 表名; |
# 视图
# 创建视图
CREATE VIEW view_name[(column_list)] | |
AS SELECT_statement | |
[WITH CHECK OPTION] |
在 student 表上创建 view_stu 视图
# 查看视图
DESCRIBE 视图名; | |
SHOW TABLE STATUS LIKE '视图名' | |
SHOW CREATE VIEW 视图名; |
# 修改视图
CREATE [OR REPLACE ]VIEW view_name [(column_list)] | |
AS SELECT_statement | |
[WITH CHECK OPTION] |
使用 CREATE OR REPLACE VIEW 语句修改 view_stu 视图
使用 ALTER 语句修改视图
# 更新视图
使用 UPDATE 语句更新视图
学习不易,诸君共勉!