数据库优化---索引

来源:互联网 发布:知乎哲理段落 编辑:程序博客网 时间:2024/06/05 22:49

1.索引原理:

通常使用B树或者B+树

2.索引分类

⑴唯一索引

不允许任意两行相同索引值

⑵主键索引

 唯一索引的特定类型

⑶组合索引

就是把表中的多个列组合在一起建立索引,这里有一个最左前缀的原则

我们创建了lname_fname_age多列索引,相当于创建了(lname)单列索引,(lname,fname)组合索引以及(lname,fname,age)组合索引。

⑷全文索引

MySQL从3.23.23版开始支持全文索引和全文检索。在MySQL中,全文索引的索引类型为FULLTEXT。全文索引可以在VARCHAR或者TEXT类型的列上创建。它可以通过CREATE TABLE命令创建,也可以通过ALTER TABLE或CREATE INDEX命令创建。对于大规模的数据集,通过ALTER TABLE(或者CREATE INDEX)命令创建全文索引要比把记录插入带有全文索引的空表更快。

2.创建索引的列:

⑴经常搜索的列

⑵主键列

⑶连接列

⑷范围搜索列,因为索引进行了排序

⑸where子句列

3.注意事项

⑴查询很少的列不创建索引

⑵列值较少(性别)的列不创建索引

⑶image,bit数据类型的列不创建索引

⑷修改性能远远大于索引性能的列,索引会提高检索性能但会降低修改性能。

⑸只要列中包含有NULL值都将不会被包含在索引中,所以我们在数据库设计时不要让字段的默认值为NULL。

⑹ 对字符串列进行索引,如果可能应该指定一个前缀长度。例如,如果有一个CHAR(255)的列,如果在前10个或20个字符内,多数值是惟一的,那么就不要对整个列进行索引。短索引不仅可以提高查询速度而且可以节省磁盘空间和I/O操作。

⑺like “%aaa%” 不会使用索引而like “aaa%”可以使用索引,以%开头不会利用到索引,结尾可以。

⑻不要在索引列上进行运算

⑼不使用NOT IN和<>操作