索引
什么是索引?
索引就是一种数据结构,能够帮助我们快速的检索数据库中的数据。
—————————————————————————————————————
索引的优势和劣势
优势:可以提高数据检索的效率,降低数据库的IO成本
劣势:索引会占据磁盘空间
—————————————————————————————————————
索引都有哪些类型?
主键索引:求数据库主动创建,不允许有空值。
单例索引 普通索引:一个索引只包含一个列,一个表可以有多个索引
唯一索引:索引列中的值必须是唯一的,但是允许为空值。
复合索引:同一索引包含多个列
全文索引:只能在文本类型CHAR,VARCGAR,TEXT类型字段上创建全文索引:字段长度比较大时,如果创建普通所引,在进行like模糊查询时效率比较低,这是可以创建全文索引。MYISAM和InnoDB中都可以使用全文索引
二:索引小练习
涉及到的表
#创建tb_user表,用来存放数据
CREATE TABLE tb_user(
id INT,
NAME VARCHAR(10),
phone VARCHAR(20),
email VARCHAR(30),
profession VARCHAR(20),
age INT,
STATUS INT,
entrydate DATE,
INDEX(id)
);
#给tb_user表插入数据
INSERT INTO tb_user(id,NAME,phone,email,profession,age,STATUS,entrydate)
VALUES(1,'韩信','1546656677','[email protected]','会计',25,1,'1997-09-09'),
(2,'妲己','1246656677','[email protected]','化工',22,1,'1997-09-09'),
(3,'闽越','1346656677','[email protected]','国际贸易',45,2,'1997-09-09'),
(4,'廉颇','1446656677','[email protected]','土木工程',56,1,'1997-09-09'),
(5,'姜子牙','1234556677','[email protected]','计算机',85,2,'1997-09-09'),
(6,'蔺相如','1456656677','[email protected]','城市园林',43,2,'1997-09-09'),
(7,'孙悟空','198656677','[email protected]','工程造价',29,1,'1997-09-09'),
(8,'后裔','1798656677','[email protected]','应用数学',30,2,'1997-09-09');
(1)、name字段为姓名字段,该字段的值可能会重复,为该字段创建索引
mysql> create index idx_user_name on tb_user(name);
Query OK, 0 rows affected (0.02 sec)
Records: 0 Duplicates: 0 Warnings: 0
(2).phone手机号字段的值是非空且唯一的,为该字段创建唯一索引
mysql> create unique index idx_user_phone on tb_user(phone);
Query OK, 0 rows affected (0.02 sec)
Records: 0 Duplicates: 0 Warnings: 0
(3).为profession、age、status创建联合索引
mysql> create index idx_user_pri_age_sta on tb_user(profession,age,status);
Query OK, 0 rows affected (0.02 sec)
Records: 0 Duplicates: 0 Warnings: 0
(4)为emal建立合适的索引来提升查询效率
mysql> create index idx_user_email on tb_user(email);
Query OK, 0 rows affected (0.02 sec)
Records: 0 Duplicates: 0 Warnings: 0
最后的显示