首页 > 数据库 > MySQL > 正文

MySQL5.7新特性之更改索引名字不会锁表

2024-07-24 12:35:16
字体:
来源:转载
供稿:网友

   MySQL5.7在更改索引名字时候不会锁表,测试过程如下:
 
  点击(此处)折叠或打开
 
  mysql> select count(*) from T_USER_INFO;
  +----------+
  | count(*) |
  +----------+
  | 7147528 |
  +----------+
  点击(此处)折叠或打开
 
  mysql> select version();
  +------------+
  | version() |
  +------------+
  | 5.7.18-log |
  +------------+
  点击(此处)折叠或打开
 
  mysql> show create table T_USER_INFO /G
  *************************** 1. row ***************************
         Table: T_USER_INFO
  Create Table: CREATE TABLE `T_USER_INFO` (
    `USER_NAME` varchar(50) DEFAULT NULL,
    `PHONE` varchar(50) DEFAULT NULL,
    `CARD_ID` varchar(50) DEFAULT NULL,
    KEY `idx_user_info_name` (`USER_NAME`)
  ) ENGINE=InnoDB DEFAULT CHARSET=utf8
  1 row in set (0.00 sec)
  此时打开两个窗口,同时进入MySQL命令行
  窗口一:
  点击(此处)折叠或打开
 
  mysql> alter table T_USER_INFO rename index idx_user_info_name to idx_user_info_nm;
  窗口二:
  点击(此处)折叠或打开
 
  mysql> select * from T_USER_INFO where user_name='rz19930119';
  先执行更改索引名字的语句,语句执行完之前,执行第二个查询。在索引名字更改完之前,查询语句可以正常执行。
 
   结论:1、MySQL5.7更改索引不会锁表(尽管这是个鸡肋的特性,因为一般不会更改索引名字)
       2、MySQL5.7增加了alter table tablename rename index idxname1 to idxname2的语法,在5.7之前的版本,更改索引名字只能采取先删除再创建的方法。

(编辑:武林网)

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表