mysql表索引怎么用 MySQL索引的使用

Mysql之索引的基本概念语法

MySQL索引的建立对于MySQL的高效运行是很重要的,索引可以大大提高MySQL的检索速度。打个比方,如果合理的设计且使用索引的MySQL是一辆兰博基尼的话,那么没有设计和使用索引的MySQL就是一个人力三轮车。创建索引时,你需要确保该索引是应用在SQL 查询语句的条件(一般作为 WHERE 子句的条件)。 实际上,索引也是一张表,该表保存了主键与索引字段,并指向实体表的记录。

专业成都网站建设公司,做排名好的好网站,排在同行前面,为您带来客户和效益!创新互联为您提供成都网站建设,五站合一网站设计制作,服务好的网站设计公司,成都网站设计、成都做网站负责任的成都网站制作公司!

上面都在说使用索引的好处,但过多的使用索引将会造成滥用。因此索引也会有它的缺点:虽然索引大大提高了查询速度,同时却会降低更新表的速度,如对表进行INSERT、UPDATE和DELETE。因为更新表时,MySQL不仅要保存数据,还要保存一下索引文件。建立索引会占用磁盘空间的索引文件。

CREATE (UNQIUE)INDEX +索引名称+ON+表名(列名(长度))

例如:create unique index ac on sys_user(account);

ALTER TABLE+表名+ADD(UNIQUE) INDEX+索引名称(列名)

例如:alter table sys_user add unique index pa(password);

DROP INDEX 索引名称 ON 表 或者 alter table 表名 drop index 索引名;

例如:drop index pa on sys_user; alter table sys_user drop index pa;

格式:SHOW INDEX FROM 表名;

SHOW INDEX FROM sys_user;

mysql索引的创建和使用

我们可以通过查看索引的属性来判断创建索引的方法。

查看索引的语法格式如下:

SHOW INDEX FROM 表名 [ FROM 数据库名]

语法说明如下:

表名:指定需要查看索引的数据表名。

数据库名:指定需要查看索引的数据表所在的数据库,可省略。比如,SHOW INDEX FROM student FROM test; 语句表示查看 test 数据库中 student 数据表的索引。

示例

使用 SHOW INDEX 语句查看《MySQL创建索引》一节中 tb_stu_info2 数据表的索引信息,SQL 语句和运行结果如下所示。

mysql SHOW INDEX FROM tb_stu_info2\G

1. row

Table: tb_stu_info2

Non_unique: 0

Key_name: height

Seq_in_index: 1

Column_name: height

Collation: A

Cardinality: 0

Sub_part: NULL

Packed: NULL

Null: YES

Index_type: BTREE

Comment:

Index_comment:

1 row in set (0.03 sec)

其中各主要参数说明如下:

参数 说明

Table 表示创建索引的数据表名,这里是 tb_stu_info2 数据表。

Non_unique 表示该索引是否是唯一索引。若不是唯一索引,则该列的值为 1;若是唯一索引,则该列的值为 0。

Key_name 表示索引的名称。

Seq_in_index 表示该列在索引中的位置,如果索引是单列的,则该列的值为 1;如果索引是组合索引,则该列的值为每列在索引定义中的顺序。

Column_name 表示定义索引的列字段。

Collation 表示列以何种顺序存储在索引中。在 MySQL 中,升序显示值“A”(升序),若显示为 NULL,则表示无分类。

Cardinality 索引中唯一值数目的估计值。基数根据被存储为整数的统计数据计数,所以即使对于小型表,该值也没有必要是精确的。基数越大,当进行联合时,MySQL 使用该索引的机会就越大。

Sub_part 表示列中被编入索引的字符的数量。若列只是部分被编入索引,则该列的值为被编入索引的字符的数目;若整列被编入索引,则该列的值为 NULL。

Packed 指示关键字如何被压缩。若没有被压缩,值为 NULL。

Null 用于显示索引列中是否包含 NULL。若列含有 NULL,该列的值为 YES。若没有,则该列的值为 NO。

Index_type 显示索引使用的类型和方法(BTREE、FULLTEXT、HASH、RTREE)。

Comment 显示评注。

navicat for mysql索引怎么使用

在“索引”选项卡,只需简单地点击索引栏位来编辑。使用索引工具栏,可以创建新的、编辑或删除选定的索引栏位。

2

添加索引:添加一个索引到表。

删除索引:删除已选择的索引。

名编辑框:设置索引名。

3

索引包含栏位的操作:双击“栏位”或点击编辑图标打开编辑器进行编辑,从列表中选择栏位。从索引中移除栏位,以相同的方式取消勾选即可。也可以用箭头按钮来改变索引栏位排序。“子部分”编辑框用来设置栏位的键长度。

温馨提示:一些数据类型不容许由多个栏位索引,例如BLOB。

4

索引类型:定义表索引的类型。

NORMAL索引是最基本的索引,并没有限制,如唯一性。

UNIQUE索引和NORMAL索引一样,只有一个差异,即索引列的全部值必须只出现一次。

FULL

TEXT索引用于MySQL全文搜索。

5

索引方法:当创建索引时指定索引类型,BTREE

HASH。

注释:设置任何可选的文本描述当前索引。适用于

MySQL

5.5.3

或以上版本。

6

以上是MySQL

MariaDB

表索引的相关内容,掌握了以上知识点,对表索引便有了初步的了解。

MySQL联表查询的索引使用

一共3张表 knowledge , knowledge_question , knowledge_answer ,数据在 6000~10000 之间。

执行的语句:

执行时间约 10分钟 ,查看执行计划如下:

全部都是全表扫描,根据MySQL联表查询的算法 Nested-Loop Join ,MySQL查询的结果集是3张表的笛卡尔积,所以效率特别低。

耗时变成 20毫秒

给Where条件建立索引,并不一定会使用。

比如:在表 knowledge 的字段 update 上建立索引 idx_time :

结果执行上来看,并没有使用索引 idx_time 。

如果where条件从 k.update_time'2019-01-03 12:00:00' 修改为 k.update_time='2019-01-03 12:00:00' (从 变成 = )

则会使用索引 idx_time

在建立索引的时候,会遇到 Table Metadata Lock 的问题,可以先 show processlist ,找到占用表锁的连接,然后 kill 。

「进阶」MySQL中如何使用索引

1、普通索引

这是最基本的索引,它没有任何限制。

2、唯一索引

它与前面的普通索引类似,不同的就是:索引列的值必须唯一,但允许有空值。如果是组合索引,则列值的组合必须唯一。

3、主键索引

它是一种特殊的唯一索引,不允许有空值。一般是在建表的时候同时创建主键索引。

4、聚簇索引

聚簇索引的索引顺序就是数据存储的物理存储顺序,这样能保证索引值相近的元组所存储的物理位置也相近。

5、全文索引(FULLTEXT)

全文索引只能创建在数据类型为VARCHAR或TEXT的列上,建立全文索引后,能够在建立了全文索引的列上进行全文查找。全文索引只能在MyISAM存储引擎的表中创建。

实际工作使用中,索引可以建立在单一列上,称为单列索引,也可以建立在多个列上,称为组合索引。

mysql 索引怎么使用

CREATE

[UNIQUE]

INDEX

ON

(字段

[ASC|DESC]);

UNIQUE

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

[ASC|DESC]

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

(创建索引的准则:

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

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

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

)

示例

create

index

i_1

on

emp(empno

asc);


本文题目:mysql表索引怎么用 MySQL索引的使用
文章地址:http://pwwzsj.com/article/hhgigd.html