赞
踩
目录
-- 索引就是排好序的,帮助我们进行快速查找的数据结构.
-- 简单来讲,索引就是一种将数据库中的记录按照特殊形式存储的数据结构。通过索引,能够显著地提高数据查询的效率,从而提升服务器的性能.
-- 专业一点来说呢,索引是一个排好序的列表,在这个列表中存储着索引的值和包含这个值的数据所在行的物理地址。在数据库十分庞大的时候,索引可以大大加快查询的速度,这是因为使用索引后可以不用扫描全表来定位某行的数据,而是先通过索引表找到该行数据对应的物理地址然后访问相应的数据。
-- MySQL 将一个表的索引都保存在同一个索引文件中,如果对其中的数据进行增删改操作,MySQL 都会自动的更新索引。
Primary Key -- 主键索引
主键是一种唯一性索引,每个表只能有一个主键,用于标识数据表中的每一条记录。
一个表可以没有主键,但最多只能有一个主键,并且主键值不能包含 NULL。
- -- 为 demo1 表添加主键索引
- -- 创建 demo01 表
- CREATE TABLE demo01(
- did INT,
- dname VARCHAR(20),
- hobby VARCHAR(30)
- );
- ALTER TABLE demo01 ADD PRIMARY KEY (did);
-
- -- 删除表
- DROP TABLE demo01;
-
- -- 创建表的时候直接添加主键索引 (最常用)
- CREATE TABLE demo01(
- did INT PRIMARY KEY,
- dname VARCHAR(20),
- hobby VARCHAR(30)
- );
Unique -- 唯一索引
唯一索引指的是索引列的所有值都只能出现一次,必须唯一。
唯一索引可以保证数据记录的唯一性,而且索引的效率也提升了。事实上,创建唯一索引的目的往往不是为了提高访问速度,而只是为了避免数据出现重复。
- -- 使用 create 语句添加唯一索引
- CREATE UNIQUE INDEX index_hobby ON demo01(hobby)
-
- -- 创建表的时候直接添加主键索引
- CREATE TABLE demo01(
- did INT PRIMARY KEY,
- dname VARCHAR(20),
- hobby VARCHAR(30),
- UNIQUE index_hobby (hobby)
- );
-
- -- 通过表结构删除索引
- ALTER TABLE demo01
- DROP INDEX index_hobby;
-
- -- 通过表结构添加索引
- -- 索引名字可省略,会自动生成名字
- ALTER TABLE demo01
- ADD UNIQUE (hobby);
-
- -- 向表中插入数据
- INSERT INTO demo01 VALUES(1,'张三','运动');
- -- 报错:Duplicate entry 'DBJ' for key 'hobby'
- INSERT INTO demo01 VALUES(2,'李四','运动');
index -- 普通索引
最常见的索引,作用就是加快对数据的访问速度。
只为那些最经常出现在查询条件或排序条件中的数据列创建普通索引。
- -- 使用 create 语句添加普通索引
- CREATE INDEX dname_index ON demo01(dname);
-
- -- 通过表结构删除索引
- ALTER TABLE demo01
- DROP INDEX dname_index;
-
- -- 通过表结构添加索引
- ALTER TABLE demo01
- ADD INDEX dname_index(dname);
删除索引
由于索引会占用一定的磁盘空间,因此,为了避免影响数据库的性能,应该及时删除不再使用的索引
- -- 删除 demo01 表中名为 dname_indx 的普通索引。
- ALTER TABLE demo01 DROP INDEX dname_indx;
索引的优缺点总结
- 添加索引首先应考虑在 where 及 order by 涉及的列上建立索引。
- 优点:1. 大大的提高查询速度;2. 可以显著的减少查询中分组和排序的时间。
- 缺点:1. 创建索引和维护索引需要时间,而且数据量越大时间越长。2. 当对表中的数据进行增加、修改、删除的时候,索引也要同时进行维护,降低了数据的维护速度。
1 . 视图是一种虚拟表。
2 . 视图建立在已有表的基础上,视图赖以建立的这些表称为基表。
3 . 向视图提供数据内容的语句为 SELECT 语句,可以将视图理解为存储起来的 SELECT 语句。
4 . 视图向用户提供基表数据的另一种表现形式。
一句话总结就是:视图是由查询结果结合成的一张虚拟的表。
视图可以在权限控制时使用。比如,某几个列可以运行用户查询,其他列不允许,可以开通视图查询特定的列,起到权限控制的作用。
视图可以简化复杂的多表查询。视图本身就是一条查询 SQL,可以将一次复杂的查询构建成一张视图,用户只要查询视图就可以获取想要得到的信息(不需要再编写复杂的 SQL)。
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。