mysql怎么重建索引 mysql重建索引会影响查询吗

mysql 更换引擎需要重建索引吗有两种方法mysql怎么重建索引,一种方法使用mysqlmysql怎么重建索引的check table和repair table 的sql语句,另一种方法是使用MySQL提供的多个myisamchk, isamchk数据检测恢复工具 。前者使用起来比较简便 。推荐使用 。
1. check table 和 repair table
登陆mysql 终端mysql怎么重建索引:
mysql -uxxxxx -p dbname
check table tabTest;
如果出现的结果说Status是OK,则不用修复,如果有Error,可以用:
repair table tabTest;
进行修复,修复之后可以在用check table命令来进行检查 。在新版本的phpMyAdmin里面也可以使用check/repair的功能 。
2. myisamchk, isamchk
其中myisamchk适用于MYISAM类型的数据表,而isamchk适用于ISAM类型的数据表 。这两条命令的主要参数相同,一般新的系统都使用MYISAM作为缺省的数据表类型,这里以myisamchk为例子进行说明 。当发现某个数据表出现问题时可以使用:
myisamchk tablename.MYI
进行检测,如果需要修复的话 , 可以使用:
myisamchk -of tablename.MYI
关于myisamchk的详细参数说明,可以参见它的使用帮助 。需要注意的时在进行修改时必须确保MySQL服务器没有访问这个数据表,保险的情况下是最好在进行检测时把MySQL服务器Shutdown掉 。
-----------------------------
另外可以把下面的命令放在你的rc.local里面启动MySQL服务器前:
[ -x /tmp/mysql.sock ]/pathtochk/myisamchk -of /DATA_DIR/*/*.MYI
其中的/tmp/mysql.sock是MySQL监听的Sock文件位置,对于使用RPM安装的用户应该是/var/lib/mysql/mysql.sock,对于使用源码安装则是/tmp/mysql.sock可以根据自己的实际情况进行变更,而pathtochk则是myisamchk所在的位置,DATA_DIR是你的MySQL数据库存放的位置 。
需要注意的时,如果你打算把这条命令放在你的rc.local里面,必须确认在执行这条指令时MySQL服务器必须没有启动mysql怎么重建索引!检测修复所有数据库(表)
mysql需要重建索引吗?修改字段类型后索引还在的 , 重建需要先删除,否则会报错 。
由于数据类型修改,索引需要重新维护,可以使用SQL:REPAIR TABLE tbl_name QUICK;
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 tpsc
Database changed
mysql alter table tpsc add index shili (tpmc ) ;
Query OK, 2 rows affected (0.08 sec)
【mysql怎么重建索引 mysql重建索引会影响查询吗】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”的索引 。
如何利用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怎么重建索引和mysql重建索引会影响查询吗的介绍到此就结束了,不知道你从中找到你需要的信息了吗 ?如果你还想了解更多这方面的信息,记得收藏关注本站 。

    推荐阅读