您的位置:首页 > 数据库 > MySQL

MySQL索引分类和各自用途

2018-05-14 18:18 246 查看

一、 MySQL: 索引以B树格式保存Memory存储引擎可以选择Hash或BTree索引,Hash索引只能用于=或<=>的等式比较。1、普通索引:create index on Tablename(列的列表)alter table TableName add index (列的列表)create table TableName([...], index [IndexName] (列的列表)2、唯一性索引:create unique indexalter ... add unique主键:一种唯一性索引,必须指定为primary key3、全文索引:从3.23.23版开始支持全文索引和全文检索,FULLTEXT,可以在char、varchar或text类型的列上创建。4、单列索引、多列索引:多个单列索引与单个多列索引的查询效果不同,因为:执行查询时,MySQL只能使用一个索引,会从多个索引中选择一个限制最为严格的索引。5、最左前缀(Leftmost Prefixing):多列索引,例如: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(不以通配符%或_开头的情形)。

阅读更多
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: