SQL是Structured Query Language(结构化查询语言)的缩写。SQL是专为数据库而建立的操作命令集,是一种功能齐全的数据库语言。在使用它时,只需要发出“做什么”的命令,“怎么做”是不用使用者考虑的。SQL功能强大、简单易学、使用方便,已经成为了数据库操作的基础,并且现在几乎所有的数据库均支持SQL。 1》索引的含义和特点: 索引是什么,索引相当于字典里面的目录序表,比如查询一个“星”字,如果不按照拼音来找的话,那么我们需要把整个字典全部遍历查询一边。才能查到这个字, 如果按照拼音来找的,那么只需要在几页音序表中查询。就可以通过音序就快速查到,这个字在字典的哪一页。在数据库中,索引是建立在表上面的,索引可以很大程 度上提高数据库的查询,同时也提高了数据库的性能,不同的存储引擎定义了索引的最大长度和索引的数量,所有的存储引擎对每个表最少支持16个索引,索引的长度 最少支持位256字节;
索引优点: 其优点可以提高数据的检索速度,针对于有依赖关系的子表和父表,在联合查询的时候可以提高查询速度。 索引的缺点: 创建和维护索引需要消耗时间,索引需要占用物理空间,每一个索引都需要占用一定的物理空间,大量的索引会影响插入数据,数据库系统会按照索引进行排 序,这样降低了插入数据的速度; 解决办法:在插入数据时,先临时删除表的索引,然后插入数据,数据插入完成后,再创建索引。 2》索引的分类: Mysql的索引类型有:普通索引,唯一性索引,全文索引,单列索引、多列索引和空间索引等;
1>普通索引 创建普通索引时,不附加任何限制条件,,这类索引可以创建在任何的数据类型上面, 2>唯一性索引 使用unique参数可以设置唯一索引,在创建唯一索引时,限制该索引的值必须是唯一的。比如在student表中,user_name 字段设置为唯一索引的话, 那么此值必须是唯一的。 3>全文索引 使用fulltext参数可以设置为全文索引,全文索引只能创建char varchar或者Text类型的字段上。只有MyISAM的存储引擎才支持此索引。Mysql5.6 innodb开始支持全文索引 4>单列索引 在表中的单个字段上创建索引,单列索引只根据该字段进行索引。单列索引可以是、普通索引、也可以是唯一索引,还可以是全文索引。只要保证该索 引只对应一个字段即可。 5>多列索引 多列索引是在表的多个字段上创建一个索引,该索引指向创建时对应的多个字段。可以通过这几个字段进行查询。但是使用了多列索引,只有查询这些 字段中的第一个字段时才会被使用索引。比如:在表中id、name和sex字段上建立一个多列索引,那么,只有查询条件使用了id 字段时多列索引才会被使 用; 6>空间索引 使用spatial参数可以设置为空间索引, 空间索引只能建立在空间数据类型上,目前只有使用MyISAM存储引擎才支持空间索引。而且此索引的字段值不 能为空。 练习:查询一下是否有其它类型的索引, Hash 索引主键索引 B-tree索引 3》如何设计索引: 为了让索引使用效率更高,在创建索引时,必须考虑在那些字段上创建索引和创建什么类型的索引; 1>唯一索引的设置: 唯一索引的值是唯一的,可以更快速的通过该索引可以确定某条记录; 比如:身份证号码是唯一的,可以建立唯一索引,如果是名字的话,那么有可能出现同名的状况,从而减低查询速度。 2>为经常需要排序、分组和联合操作的字段建立索引: 经常需要order by group by distinct和union等操作的字段,排序操作会浪费很多时间,如果为这些字段建立索引,可以有效地的避免排序操作; 3>为常作为查询条件的字段建立索引: 如果某一个字段常用需要来查询条件,那么该字段的查询速度影响这个张表的速度,因此为这样的字段建立索引,可以提高整张表的查询速度; 4>限制索引的数目: 索引的数目不是越多越好,每个索引都需要占用磁盘空间。索引越多,需要的磁盘空间就越大,修改表时,所索引的重构和更新麻烦,越多的索引更新 表就变得很浪费时间; 5>尽量使用数据量少的索引: 如果索引的值很长,那么查询的速度会受到影响,比如对一个Char(100)类型的字段进行全文索引需要的时间肯定要比char(10)类型的字段需要的时间更 多; 6>删除不再使用和很少使用的索引: 表中的数据被大量更新,或者数据的使用方式被改变后,原有的一些索引可能不在需要,DBA应该定期的找出这些索引,将它们删除,从而减少索引对 更新操作的影响; 4》如何创建索引: 语法: [unique |