MySQL索引分类和各自用途

数据库 Oracle 数据库运维
MySQL索引分为普通索引、唯一性索引、全文索引、单列索引、多列索引等等。这里将为大家介绍着几种索引各自的用途。

一、 MySQL: 索引以B树格式保存

Memory存储引擎可以选择Hash或BTree索引,Hash索引只能用于=或<=>的等式比较。

1、普通索引:create index on Tablename(列的列表)

alter table TableName add index (列的列表)

create table TableName([...], index [IndexName] (列的列表)

2、***性索引:create unique index

alter ... add unique

主键:一种***性索引,必须指定为primary key

3、全文索引:从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(不以通配符%或_开头的情形)。

【编辑推荐】

  1. SQL Server置疑数据库解决方法
  2. SQL Server 2008的升级与部署
  3. 浅谈配置SQL Server远程备份的方法
责任编辑:彭凡 来源: hi.baidu.com
相关推荐

2009-06-12 10:16:27

EJB分类

2010-10-12 13:42:11

MySQL单列索引

2010-04-21 13:10:53

Oracle用户权限

2010-11-11 15:48:54

MySQL单列索引

2010-10-12 16:50:14

MySQL Hash索

2019-09-25 15:09:30

MySQL索引SQL

2018-06-07 08:54:01

MySQL性能优化索引

2021-07-26 10:42:49

云计算AIOps人工智能

2016-11-03 19:10:02

Linux操作系统

2020-09-28 15:34:38

ElasticSear索引MySQL

2015-10-30 15:55:43

MySQL

2010-04-19 13:31:42

Oracle索引

2010-07-12 13:39:10

UML对象图

2022-03-25 13:39:40

区块链技术房地产

2011-09-30 14:17:35

iReader

2011-03-31 13:51:54

MySQL索引

2010-05-27 16:12:10

MySQL索引

2010-08-02 09:10:36

Flex模块化

2010-06-13 14:31:18

MySQL 5.0

2021-06-06 13:03:53

MySQL普通索引
点赞
收藏

51CTO技术栈公众号