mysql怎么选取索引 mysql索引选择性原理

关于MySQL复合索引的使用方法

MySQL的复合索引可以创建多个,每个复合索引可以包含一列或多列。复合索引使用的基本原则是左侧对齐原则。例如,复合索引包含A,B,C字段,实际相当于创建了5个索引,即:

在通辽等地区,都构建了全面的区域性战略布局,加强发展的系统性、市场前瞻性、产品创新能力,以专注、极致的服务理念,为客户提供网站制作、成都网站制作 网站设计制作定制网站建设,公司网站建设,企业网站建设,成都品牌网站建设,营销型网站建设,外贸网站制作,通辽网站建设费用合理。

那么问题来了,如果我们创建两个复合索引,复合索引1:包含A,B,C列和复合索引2:包含B,C列,MySQL如何执行呢?

按照正常的逻辑,和复合索引的原则,应该能命中的索引是A_B_C_index,让我们拭目以待吧!

结果:和上次测试的不一致,这次虽然包含ABC三个列,但命中的索引是B_C_index

重要结论:当命中两个或者多个不同的复合索引时,按照创建顺序不同,MySQL会有不同策略来选取其中的一个复合索引。

mysql 索引怎么使用

CREATE

[UNIQUE]

INDEX

ON

(字段

[ASC|DESC]);

UNIQUE

--确保所有的索引列中的值都是可以区分的。

[ASC|DESC]

--在列上按指定排序创建索引。

(创建索引的准则:

1.如果表里有几百行记录则可以对其创建索引(表里的记录行数越多索引的效果就越明显)。

2.不要试图对表创建两个或三个以上的索引。

3.为频繁使用的行创建索引。

)

示例

create

index

i_1

on

emp(empno

asc);

mysql为啥建选不了普通索引

mysql数据库索引是一种能够让mysql数据查询更加快速的数据结构,我们在新建数据库的时候,如果设置了某个字段的Primary key主键,那么数据库会默认为我们的主键字段创建一个唯一索引(Unique Index)的东西,所以你就不需要再为此字段创建mysql数据库索引了,当然了,如果你想设置别的字段索引,那么就要额外加入该字段的数据库索引了。

一:Mysql数据库索引的创建

1)如何为我们的mysql数据库添加索引呢?很简单,请看下面的创建mysql普通索引格式:

CREATE INDEX [index name] ON [table name]([column name]);

参数说明:NameDescription

index name索引名称.

table name需要添加索引的表名称.

column name需要添加索引的列名称.

例如我们要创建一个索引,就可以使用如下的mysql命令运行即可:CREATE INDEX myindex ON mytable(aut_id);

2)唯一索引的创建,和mysql普通索引差不多,只需要在INDEX关键词前面加入UNIQUE关键词即可,mysql命令如下:CREATE UNIQUE INDEX myindex ON mytable(aut_id);

我们也可以使用USING BTREE关键字,B-tree算法减少定位记录时所经历的中间过程,从而加快存取速度,mysql命令如下:CREATE UNIQUE INDEX myindex ON mytable(aut_id) USING BTREE;

二:查看mysql数据库索引

我们可以使用以下命令查询刚刚新建的mysql数据库索引,“from mytable”代表查询该数据库表里面有哪些索引,mysql命令如下:show index from mytable;

创建成功之后,会在“key_name”字段中显示刚刚创建的数据库索引名称,如图所示:

三:删除mysql数据库索引

我们也可以使用mysql命令删除某张表的索引,命令如下:drop index english on mytable

四:查询sql语句是否使用了mysql索引

我们上面常见好mysql数据库索引之后,如果想要知道我们在执行sql语句时是否使用了数据库索引,就要在sql语句前面加入“EXPLAIN”关键词,命令如下所示:EXPLAIN SELECT * FROM `allword` where english='America';

如果使用到了我们创建的字段索引,就会看到如图所示的字段都不会是NULL空值,如下:

在有些情况下mysql索引会失效,也就是在执行到sql语句时没有使用到我们创建的数据库表字段索引,可能有以下这些情况:

1:使用了OR关键字查询

2:或者LOWER(),UPPER()函数,

3:还有一种就是使用了LIKE关键字查询,像(like '%XX'或者like '%XX%')这样的语句,但是像(like 'XX%')这种情况的mysql表索引是不会失效的。

mysql索引

在mysql中,索引是一种特殊的数据库结构,由数据表中的一列或多列组合而成,可以用来快速查询数据表中有某一特定值的记录。

通过索引,查询数据时不用读完记录的所有信息,而只是查询索引列即可。

通过索引,查询数据时不用读完记录的所有信息,而只是查询索引列。否则,数据库系统将读取每条记录的所有信息进行匹配。

可以把索引比作新华字典的音序表。例如,要查“库”字,如果不使用音序,就需要从字典的 400 页中逐页来找。但是,如果提取拼音出来,构成音序表,就只需要从 10 多页的音序表中直接查找。这样就可以大大节省时间。

因此,使用索引可以很大程度上提高数据库的查询速度,还有效的提高了数据库系统的性能。

索引的优缺点

索引有其明显的优势,也有其不可避免的缺点。

优点

索引的优点如下:

1、通过创建唯一索引可以保证数据库表中每一行数据的唯一性。

2、可以给所有的 MySQL 列类型设置索引。

3、可以大大加快数据的查询速度,这是使用索引最主要的原因。

4、在实现数据的参考完整性方面可以加速表与表之间的连接。

5、在使用分组和排序子句进行数据查询时也可以显著减少查询中分组和排序的时间

缺点

增加索引也有许多不利的方面,主要如下:

1、创建和维护索引组要耗费时间,并且随着数据量的增加所耗费的时间也会增加。

2、索引需要占磁盘空间,除了数据表占数据空间以外,每一个索引还要占一定的物理空间。如果有大量的索引,索引文件可能比数据文件更快达到最大文件尺寸。

3、当对表中的数据进行增加、删除和修改的时候,索引也要动态维护,这样就降低了数据的维护速度。

使用索引时,需要综合考虑索引的优点和缺点。


当前名称:mysql怎么选取索引 mysql索引选择性原理
文章源于:http://azwzsj.com/article/dopcdpi.html