主要内容如下:
1、索引的概念
2、普通索引
3、唯一索引
4、主键索引
5、全文索引
6、删除、禁用索引
7、设计索引的原则
关于索引,推荐的学习链接:
1、索引的概念索引是数据库中用来提高查询性能的最常用工具。
所有MySQL列类型都可以被索引,对相关列使用索引是提高SELECT操作性能的最佳途径。索引用来快速地寻找那些具有特定值的记录,所有MySQL索引都以B-树的形式保存。
在使用以下操作符时,都会用到相关列上的索引:
>、<、>=、<=、<>、in、 between
like \'pattern\'(pattern不能以通配符开始,即通配符不能放前面,即使放在了前面,索引也无效)
注:索引的值因为不断改变,所以是它需要维护的。如果数据量较少,建议不用索引。
2、normal 普通索引(第一种索引)方式一:直接创建索引:
语法,注意加():
CREATE INDEX 索引名 ON 表名(列名[(length)]…);
举例:
然后,我们在表中可以看到新创建的索引:(我们可以在这个navicat的可视化界面中修改索引类型)
方式二:修改表时添加索引
语法:
ALTER TABLE 表名 ADD INDEX [索引名] (列名[(length)]…);
方式三:创建表的时候指定索引:
CREATE TABLE 表名 ( 表名 (
[...],
INDEX [索引名] (列名[(length)]…);
注意:如果要创建索引的列的类型是CHAR、VARCHAR类型,length可以小于字段实际长度;如果是BLOB和TEXT类型,必须指定length。
3、unique 唯一索引(第二种索引)这种索引和前面的“普通索引”基本相同,但有一个区别:索引列的所有值都必须唯一。例如可以将身份证号作为索引。
创建方式和上方的普通索引类似。即:将普通索引的“index”改为“unique index”。
4、主键索引(一种特殊的唯一索引)主键是一种特殊的唯一索引,一般在创建表的时候指定。在 MYSQL 中,当你建立主键时,主键索引同时也已经建立起来了,不必重复设置。
记住:一个表只能有一个主键,也即只有一个主键索引。
5、fulltext index全文索引(第三种索引)MySQL从3.2版开始支持全文索引和全文检索。在MySQL中,全文索引的索引类型为fulltext index。
MySQL5.0版本只有MyISAM存储引擎支持fulltext index,并且只限于CHAR、VARCHAR和TEXT类型的列上创建。
注:全文索引维护起来很吃力,所以了解即可。
创建方式和上方的普通索引类似。即:将普通索引的“index”改为“fulltext index”。
6、删除、禁用索引一般使用“删除”,不使用“禁用”。
删除索引:
语法:
DROP INDEX 索引名 ON 表名
对于MyISAM表在做数据大批量导入时,它会边插入数据边建索引。所以为了提高执行效率,应该先禁用索引,在完全导入后,再开启索引。而InnoDB表对索引都是单独处理的,无需禁用索引。
禁用索引:
ALTER TABLE 表名 DISABLE KEYS;
打开索引:
ALTER TABLE 表名 ENABLE KEYS;
7、设计索引的原则最适合索引的列是出现在WHERE子句中的列,或连接子句(on语句)中指定的列,而不是出现在SELECT后的列。
索引列的值中,不相同的数目越多,索引的效果越好。
使用短索引:对于CHAR和VARCHAR列,只用它的一部分来创建索引,可以节省索引空间,也会使查询更快捷。
如:CREATE INDEX part_of_name ON employees(name(10)); 这个句子中指定的length长度为10,就是使用短索引,也就是说取name的前十个字符。
利用最左前缀。
根据搜索的关键字建立多列索引。
不要过度索引。维护索引需要成本。