mysql索引类型以及适用场景

2/13/2017来源:SQL技巧人气:2169

1.普通索引 最基本的索引,没有任何限制 2.唯一索引 索引列的值必须唯一,但允许有空值 3.主键索引 主键索引属于一种特殊的唯一索引,不允许有空值 4.单列索引 单个多列索引(组合索引)效率高于多个单列索引 5.最左前缀(Leftmost PRefixing):多列索引 多列索引只有在where条件中含有索引中的首列字段时才有效 例如:fname_lname_age索引, 以下的搜索条件MySQL都将使用 : fname_lname_age索引:firstname,lastname,age;firstname,lastname;firstname,其他情况将不使用

二、根据sql查询语句确定创建哪种类型的索引,如何优化查询 选择索引列:   a.性能优化过程中,选择在哪个列上创建索引是最重要的步骤之一。可以考虑使用索引的主要有   两种类型的列:在where子句中出现的列,在join子句中出现的列。   b.考虑列中值的分布,索引的列的基数越大,索引的效果越好。   c.使用短索引,如果对字符串列进行索引,应该指定一个前缀长度,可节省大量索引空间,提升查询速度。   d.利用最左前缀   e.不要过度索引,只保持所需的索引。每个额外的索引都要占用额外的磁盘空间,并降低写操作的性能。   在修改表的内容时,索引必须进行更新,有时可能需要重构,因此,索引越多,所花的时间越长。   MySQL只对一下操作符才使用索引:<,<=,=,>,>=,between,in, 以及某些时候的like(不以通配符%或_开头的情形)。