CREATE INDEX语句添加索引 会锁表吗
时间: 2023-08-15 08:08:17 浏览: 62
在MySQL中,执行CREATE INDEX语句添加索引时,会涉及到表的修改,因此MySQL会对该表进行锁定。如果使用的是InnoDB存储引擎,那么修改表结构时会使用一种称为“在线DDL”的技术,即在不锁定整个表的情况下完成索引的添加,但是仍然会对表进行短暂的锁定,以保证数据的一致性。如果使用的是MyISAM存储引擎,则会对整个表进行锁定,直到索引添加完成。因此,在执行CREATE INDEX语句添加索引时,需要谨慎考虑对业务的影响,以免影响正常的业务操作。
相关问题
使用CREATE INDEX语句能创建主键吗
使用 `CREATE INDEX` 语句是可以创建主键的,但是应该使用 `CREATE TABLE` 语句来创建包含主键的表,而不是单独使用 `CREATE INDEX` 语句来创建主键。
在 SQL 中,主键是一种特殊的约束,用于确保表中的每行数据都具有唯一标识符。要创建包含主键的表,应该使用 `CREATE TABLE` 语句,并在列定义中指定 `PRIMARY KEY` 约束,如下所示:
```
CREATE TABLE MyTable (
id INT PRIMARY KEY,
name VARCHAR(50),
age INT
);
```
在上述示例中,`id` 列被指定为主键,使用 `PRIMARY KEY` 关键字来指定约束。使用 `CREATE INDEX` 语句来创建主键索引是不必要的,因为主键本身就可以自动创建一个唯一性索引,以确保表中的每行数据都具有唯一标识符。
分别用ALTER TABLE及CREATE INDEX语句在表 tb_student上建立主键索引。
好的,下面是分别使用 ALTER TABLE 和 CREATE INDEX 语句在表 tb_student 上建立主键索引的示例:
使用 ALTER TABLE 语句建立主键索引:
```
ALTER TABLE tb_student ADD PRIMARY KEY (id);
```
这条语句将在表 tb_student 上添加一个名为 id 的主键索引。
使用 CREATE INDEX 语句建立主键索引:
```
CREATE UNIQUE INDEX idx_student_id ON tb_student (id);
```
这条语句将在表 tb_student 上创建一个名为 idx_student_id 的唯一索引,包含 id 列。由于主键是唯一的,因此创建唯一索引也可以建立主键索引。
希望这个示例对您有帮助!如果您有其他问题,请随时问我。