多语言展示
当前在线:764今日阅读:11今日分享:15

MySQL基础,索引定义及在创建表的时候创建索引

索引在数据库中的作用是快速找出某个列中一个特定值的行,不使用索引的话,MySQL必须从第一条记录遍历到相关行,表越大,花费的时间越多,但是如果有索引,就能快速的到达某个位置去搜索数据文件。
工具/原料
1

电脑

2

MySQL

3

Navicat等可视化管理工具

索引的定义及优缺点
1

索引的优点:1.通过创建唯一索引,可以保证数据库每一行数据的唯一性2.可以大大提高择国查询速度3.可以加速表与表的连接4.可以显著的减少查询中分组和排序的时间。

索引的分类及设计原则
1

索引的分类:1.普通索引(Normal):基本索引类型,允许在定义索引的列里插入空值或重复值。2.唯一索引(Unique):索引列值必须唯一,但允许有空值。如果是组合索引,则列值的组合必须唯一。主键索引是一种特殊的唯一索引,不允许有空值3.单列索引:只包含一个列的索引,一个表中可以有多个4.组合索引:包含多个列的索引,查询条件包含这些列的最左边的字段的时候,索引就会被引用,遵循最左缀原则5.全文索引(Full Text):在定义的值中支持全文查找,允许空值和重复值,可以在CHAR,VARCHAR或者TEXT字段类型上创建,仅支持MyISAM存储引擎6.空间索引:针对空间数据做的索引,支持的数据类型有4种,分别是GEOMETRY,POINT,LINESTRING和POLYGON。创建空间索引的列必须声明为非空值(NOT NULL),仅支持MyISAM存储引擎

2

索引的设计原则1.不是越多越好2.常更新的表越少越好3.数据量小的表最好不要建立索引4.不同的值比较多的列才需要建立索引5.某种数据本身具备唯一性的时候,建立唯一性索引,可以保证定义的列的数据完整性,以提高查询熟度6.频繁进行排序或分组的列(group by或者是order by)可以建立索引,提高搜索速度7.经常用于查询条件的字段应该建立索引

在创建表的时候创建索引
1

创建普通索引CREATE TABLE test_1(        id INT NOT NULL,        num INT NOT NULL,        test_name VARCHAR(50) NOT NULL,        INDEX(num));查看创建的表的表结构SHOW CREATE TABLE test_1;使用Navicat查看创建的索引

2

使用EXPLAIN查看索引是否使用(注意要先往表中插入相应的数据,至少两条)EXPLAIN SELECT * FROM test_1 WHERE num=1;查询结果的字段详解select_type:查询类型,可能的值:SIMPLE,PRIMARY,UNION,SUNQUERY等table:表名,按被读取的先后顺序查询type:与其他表的关系,可能的值:system,const,eq_ref,ref,range,index和Allpossible_key:搜索记录可选用的各个索引key:实际选用的索引key_len:索引按字节计算的长度,ref:行给出关联关系中另一个数据表里的数据列的名称rows:预计读出的行数extra:与关联操作相关的信息

3

创建唯一索引CREATE TABLE test_2(        id INT NOT NULL,        num INT NOT NULL,        test_name VARCHAR(50) NOT NULL,        UNIQUE INDEX UniqIdx(id));查看创建的表的表结构SHOW CREATE TABLE test_2;使用Navicat查看创建的索引

4

创建单列索引CREATE TABLE test_3(        id INT NOT NULL,        num INT NOT NULL,        test_name VARCHAR(50) NOT NULL,        INDEX SingleIdx(id));查看创建的表的表结构SHOW CREATE TABLE test_3;使用Navicat查看创建的索引

5

创建组合索引CREATE TABLE test_4(        id INT NOT NULL,        num INT NOT NULL,        test_name VARCHAR(50) NOT NULL,        INDEX MultiIdx(id,num));查看创建的表的表结构SHOW CREATE TABLE test_4;使用Navicat查看创建的索引

6

创建全文索引(注意,全文索引仅能在MyISAM引擎中使用)CREATE TABLE test_5(        id INT NOT NULL,        num INT NOT NULL,        title VARCHAR(50) NOT NULL,        info TEXT NOT NULL,        FULLTEXT INDEX FullIdx(info)) ENGINE=MyISAM;查看创建的表的表结构SHOW CREATE TABLE test_5;使用Navicat查看创建的索引

7

创建空间索引(注意,空间索引仅能在MyISAM引擎中使用)CREATE TABLE test_6(        aaa GEOMETRY NOT NULL,        SPATIAL key SpaIdx(aaa)) ENGINE=MyISAM;查看创建的表的表结构SHOW CREATE TABLE test_6;使用Navicat查看创建的索引

注意事项
1

需要明白索引的优缺点,再选择需要用的索引

2

最好在建表钱就确定每张表的索引字段

推荐信息