数据库索引

数据库索引概述
一、数据库索引
在数据库中,素引使数据库程序无须对整个表进行扫描,就可以在其中找到所有数据。
数据库的索引是某个表中一列或者若于列值的集合,以及物理标识这些值的数据页的逻辑指针清单。
二、索引的作用
(1)设置了合适的索引之后,数据库利用各种快速的定位技术,能够加快查询速率,特别是当表很大时,或者查询涉及到多个表时,使用索引可使查询加快成千倍。
(2)可以降低数据库的1O成本,并且索引还可以降低数据库的排序成本。
(3)通过创建唯一性索引保证数据表数据的唯一性,可以加快表与表之间的连接。
(4)在使用分组和排序时,可大大减少分组和排序时间。
三、索引的分类。
(1)普通索引
这是最基本的索引类型,而且没有唯一性之类的限制.
(2)唯一性索引
与普通索引基本相同,区别在于:索引列的所有值都只能出现一次,即必须唯一,但可为空。
(3)主键,是一种特殊的唯一索引,必须指定为“PRIMARYKEY”,具有唯一性的同时不能为空。
(4)全文索引
MySQL从3.23.23版开始支持全文索引和全文检索。在MySQL中,全文索引的类型为FULLTEXT,全文索引可以在VARCHAR或者TEXT类型的列上创建。贴吧的文本内容,和一些小型的网站网页内容,存放在数据库中即为全文索引模式。
(5)单列索引与多列素引
索引可以是单列上创建的索引,也可以是多列上创建的索引。
四、创建索引的原则依据
1、表的主键、外键必须有索引。
2、数量超过300行的表应该有索引。
3、经常与其他表进行连接的表,在连接字段上应该建立索引。
4、唯一性太差的字段不适合建立索引。
5、更新太频繁的字段不适合创建索引
6、经常出现在where字句中的字段,特别是大表的字段,应该建立索引。
7、索引应该建在选择性高的字段上
8、索引应该建立在小字段上,对于大的文本字段甚至超长字段,不要建立索引
五、创建、查看、删除索引的方法。
根据企业需求选择了合适的索引之后,可以使用CREATE INDEX创建素引,CREATE INDEX加上各个索引关键字便可创建各个类型的索引。

1、创建普通索引
格式:create index <索引的名字> ON 表名(字段);
2、创建唯一性索引
格式:create unique index <索引的名字> ON 表名(字段)
3、创建主键索引
格式:create table 表名 ([…], primary key(字段));
alter table 表名 add primary key(字段);
4、查看索引.
格式:show index from 表名;
show keys from 表名;
5、删除索引
格式:drop index <索引的名称> on 表名;
alter table 表名 drop index <索引的名称>;
alter table 表名 drop primary key;

案例:
[root@localhost ~]# mysql -uroot -p111111
MariaDB [(none)]> create database imployee_salary charset utf8;
MariaDB [(none)]> use imployee_salary
MariaDB [imployee_salary]> create table IT_salary(岗位类别 char(20) not null,姓名 char(20) not null,年龄 int,员工ID int not null,学历 char(6),年限 int,薪资 int not null,primary key(员工ID));
MariaDB [imployee_salary]> insert into IT_salary values('网络工程师','孙空武','27','011','本科','3','4800');
MariaDB [imployee_salary]> insert into IT_salary values('windows工程师','蓝凌','19','012','中专','2','3500');;
MariaDB [imployee_salary]> insert into IT_salary values('linux工程师','姜文','32','013','本科','8','15000');
MariaDB [imployee_salary]> insert into IT_salary values('java软件工程师','关园','38','014','大专','10','16000');
MariaDB [imployee_salary]> insert into IT_salary values('硬件驱动工程师','罗中昆','29','015','大专','9','16500');
MariaDB [imployee_salary]> create index salary_index on IT_salary(薪资); //创建普通索引
MariaDB [imployee_salary]> alter table IT_salary add primary key(员工ID); //创建主键索引
MariaDB [imployee_salary]> create unique index salary_unique_index on IT_salary(姓名); //创建唯一性索引
MariaDB [imployee_salary]> show index from IT_salary \G; //查看索引
MariaDB [imployee_salary]> drop index salary_index on IT_salary; //删除普通索引
MariaDB [imployee_salary]> alter table IT_salary drop index salary_unique_index; //删除主键索引
MariaDB [imployee_salary]> alter table IT_salary primary key; //删除主键索引

 

你可能感兴趣的:(数据库索引)