mysql如何创建添加索引?

MySQL支持多种方法在单个或多个列上创建索引:

在创建表的时候创建索引:

使用CREATE TABLE创建表时,除了可以定义列的数据类型,还可以定义主键约束、外键约束或者唯一性约束,而不论创建哪种约束,在定义约束的同时相当于在指定列上创建了一个索引。创建表时创建索引的基本语法如下:

CREATE TABLE table_name [col_name data_type] [UNIQUE|FULLTEXT|SPATIAL] [INDEX|KEY] [index_name] (col_name [length]) [ASC|DESC]

其中,UNIQUE、FULLTEXT和SPATIAL为可选参数,分别表示唯一索引、全文索引和空间索引;INDEX与KEY为同义词,两者作用相同,用来指定创建索引。

例如,可以按照如下方式,在id字段上使用UNIQUE关键字创建唯一索引:

CREATE TABLE t1 (  id INT NOT NULL,     name CHAR(30) NOT NULL,     UNIQUE INDEX UniqIdx(id) );

在已存在的表上创建索引

在已经存在的表中创建索引,可以使用ALTER TABLE语句或者CREATEINDEX语句。

ALTER TABLE创建索引的基本语法如下:

ALTER TABLE table_name ADD  [UNIQUE|FULLTEXT|SPATIAL] [INDEX|KEY] [index_name] (col_name[length],...) [ASC|DESC]

例如,可以按照如下方式,在bookId字段上建立名称为UniqidIdx的唯一索引:

ALTER TABLE book ADD UNIQUE INDEX UniqidIdx (bookId);

CREATE INDEX创建索引的基本语法如下:

CREATE [UNIQUE|FULLTEXT|SPATIAL] INDEX index_name  ON table_name (col_name [length],...) [ASC|DESC]

例如,可以按照如下方式,在bookId字段上建立名称为UniqidIdx的唯一索引:

CREATE UNIQUE INDEX UniqidIdx ON book (bookId);
MySQL 中,**索引(Index)** 是一种用于加速数据库数据检索的结构。添加合适的索引可以显著提升查询性能,尤其是在经常被用来作为查询条件的列上。 --- ## 一、添加索引的方法 MySQL 提供了多种方式来为的列添加索引: ### 1. 创建直接添加索引 ```sql CREATE TABLE employee ( id INT AUTO_INCREMENT PRIMARY KEY, name VARCHAR(100) NOT NULL, department VARCHAR(100), salary DECIMAL(10,2), INDEX idx_name (name) ); ``` **说明:** - 在创建的同,在 `name` 字段上创建了一个普通索引,命名为 `idx_name`。 --- ### 2. 使用 `ALTER TABLE` 添加索引(推荐) ```sql ALTER TABLE employee ADD INDEX idx_department (department); ``` **说明:** - 为已存在的 `employee` 的 `department` 字段添加一个名为 `idx_department` 的索引。 --- ### 3. 使用 `CREATE INDEX` 语句添加索引 ```sql CREATE INDEX idx_salary ON employee (salary); ``` **说明:** - 给 `salary` 列单独创建索引。 --- ## 二、不同类型的索引 | 类型 | SQL 示例 | 说明 | |--------------|--------------------------------------------------------|------| | 普通索引 | `CREATE INDEX idx_name ON employee(name);` | 最基本的索引,没有唯一性限制 | | 唯一索引 | `CREATE UNIQUE INDEX uni_email ON users(email);` | 索引值必须唯一,允许有空值 | | 主键索引 | `PRIMARY KEY (id)` | 一种特殊的唯一索引,不允许为空 | | 全文索引 | `CREATE FULLTEXT INDEX ft_desc ON articles(description);` | 用于全文搜索,适用于文本类型字段 | | 多列组合索引 | `CREATE INDEX idx_name_dept ON employee(name, department);` | 对多个字段一起索引 | --- ## 三、查看索引 你可以使用以下命令查看某个上的所有索引: ```sql SHOW INDEX FROM employee; ``` --- ## 四、删除索引 ```sql DROP INDEX idx_name ON employee; ``` --- ## 五、注意事项 - **不要对所有列都加索引**:索引会占用磁盘空间,并可能降低插入和更新的速度。 - **频繁查询的列适合加索引**:比如 `WHERE`, `JOIN`, `ORDER BY` 中使用的列。 - **前缀索引优化**:对于很长的字符串列,可以只索引前面几个字符: ```sql CREATE INDEX idx_name_prefix ON employee(name(20)); ``` ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值