mysql如何重建索引,mysql索引怎么建立
内容导航:
一、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\G1. row Table: tb_stu_info2Non_unique: 0Key_name:
heightSeq_in_index: 1Column_name: heightCollation: ACardinality: 0Sub_part:
NULLPacked: NULLNull: YESIndex_type: BTREEComment: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
显示评注。
二、如何利用MySQL命令创建查看重建和删除索引
第一步,创建数据库表t_tree_info,命令如下create table t_tree_info(id int(8),tno int(4),tname
varchar(20),tdesc
varchar(100));如下图所示:第二步,向表里插入3条数据,插入后查看表记录,如下图所示:第三步,创建数据库索引tree_name,命令如下:create
index tree_name on t_tree_info (tname(20));如下图所示:第四步,查看数据库表索引,利用show命令show
index from t_tree_info;如下图所示:第五步,重建索引,利用repari命令repair table t_tree_info
quick;如下图所示:第六步,索引创建好了,在不使用该索引时,可以删除drop index tree_name on t_tree_info;如下图所示:
三、索引重建问题
答:从你给出的结果来看你这个表是堆表,没有创建国任何索引。所以谈不上索引重建。堆是数据的一种存储方式。堆表的数据是无固定顺序存放的。
四、mysql索引怎么重建,或者重新收集索引统计信息
需要重新创建索引,因为长度不同会认为是两个不同的所索引。创建和删除索引索引的创建可以在CREATE TABLE语句中进行,也可以单独用CREATE
INDEX或ALTER TABLE来给表增加索引。删除索引可以利用ALTER TABLE或DROP INDEX语句来实现。(1)使用ALTER
TABLE语句创建索引。语法如下:alter table table_name add index index_name (column_list)
;alter table table_name add unique (column_list) ;alter table table_name add
primary key (column_list) ;其中包括普通索引、UNIQUE索引和PRIMARY
KEY索引3种创建索引的格式,table_name是要增加索引的表名,column_list指出对哪些列进行索引,多列时各列之间用逗号分隔。索引名index_name可选,缺省时,MySQL将根据第一个索引列赋一个名称。另外,ALTER
TABLE允许在单个语句中更改多个表,因此可以同时创建多个索引。创建索引的示例如下:mysql> use tpscDatabase
changedmysql> alter table tpsc add index shili (tpmc ) ;Query OK, 2 rows
affected (0.08 sec)Records: 2 Duplicates: 0 Warnings: 0(2)使用CREATE
INDEX语句对表增加索引。能够增加普通索引和UNIQUE索引两种。其格式如下:create index index_name on table_name
(column_list) ;create unique index index_name on table_name (column_list)
;说明:table_name、index_name和column_list具有与ALTER
TABLE语句中相同的含义,索引名不可选。另外,不能用CREATE INDEX语句创建PRIMARY KEY索引。(3)删除索引。删除索引可以使用ALTER
TABLE或DROP INDEX语句来实现。DROP INDEX可以在ALTER TABLE内部作为一条语句处理,其格式如下:drop index
index_name on table_name ;alter table table_name drop index index_name ;alter
table table_name drop primary key
;其中,在前面的两条语句中,都删除了table_name中的索引index_name。而在最后一条语句中,只在删除PRIMARY
KEY索引中使用,因为一个表只可能有一个PRIMARY KEY索引,因此不需要指定索引名。如果没有创建PRIMARY
KEY索引,但表具有一个或多个UNIQUE索引,则MySQL将删除第一个UNIQUE索引。如果从表中删除某列,则索引会受影响。对于多列组合的索引,如果删除其中的某列,则该列也会从索引中删除。如果删除组成索引的所有列,则整个索引将被删除。删除索引的操作,如下面的代码:mysql>
drop index shili on tpsc ;Query OK, 2 rows affected (0.08 sec)Records: 2
Duplicates: 0 Warnings: 0该语句删除了前面创建的名称为“shili”的索引。
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容,请发送邮件至 55@qq.com 举报,一经查实,本站将立刻删除。转转请注明出处:https://www.szhjjp.com/n/132553.html