电脑
MySQL
Navicat等可视化管理工具
索引的优点:1.通过创建唯一索引,可以保证数据库每一行数据的唯一性2.可以大大提高择国查询速度3.可以加速表与表的连接4.可以显著的减少查询中分组和排序的时间。
索引的分类:1.普通索引(Normal):基本索引类型,允许在定义索引的列里插入空值或重复值。2.唯一索引(Unique):索引列值必须唯一,但允许有空值。如果是组合索引,则列值的组合必须唯一。主键索引是一种特殊的唯一索引,不允许有空值3.单列索引:只包含一个列的索引,一个表中可以有多个4.组合索引:包含多个列的索引,查询条件包含这些列的最左边的字段的时候,索引就会被引用,遵循最左缀原则5.全文索引(Full Text):在定义的值中支持全文查找,允许空值和重复值,可以在CHAR,VARCHAR或者TEXT字段类型上创建,仅支持MyISAM存储引擎6.空间索引:针对空间数据做的索引,支持的数据类型有4种,分别是GEOMETRY,POINT,LINESTRING和POLYGON。创建空间索引的列必须声明为非空值(NOT NULL),仅支持MyISAM存储引擎
索引的设计原则1.不是越多越好2.常更新的表越少越好3.数据量小的表最好不要建立索引4.不同的值比较多的列才需要建立索引5.某种数据本身具备唯一性的时候,建立唯一性索引,可以保证定义的列的数据完整性,以提高查询熟度6.频繁进行排序或分组的列(group by或者是order by)可以建立索引,提高搜索速度7.经常用于查询条件的字段应该建立索引
创建普通索引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查看创建的索引
使用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:与关联操作相关的信息
创建唯一索引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查看创建的索引
创建单列索引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查看创建的索引
创建组合索引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查看创建的索引
创建全文索引(注意,全文索引仅能在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查看创建的索引
创建空间索引(注意,空间索引仅能在MyISAM引擎中使用)CREATE TABLE test_6( aaa GEOMETRY NOT NULL, SPATIAL key SpaIdx(aaa)) ENGINE=MyISAM;查看创建的表的表结构SHOW CREATE TABLE test_6;使用Navicat查看创建的索引
需要明白索引的优缺点,再选择需要用的索引
最好在建表钱就确定每张表的索引字段