MySQL给表里的某个字段建立索引

本文详细介绍如何在SQL中创建不同类型的索引,包括主键索引、唯一索引、普通索引、全文索引及多列索引,并提供具体语法示例,如使用ALTER TABLE和CREATE INDEX命令。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

注:`table_name`   `column` 中的``Esc下方的一个键 ~`,可省略不写``,直接写表名和字段名

1.添加PRIMARY KEY(主键索引):

ALTER TABLE `table_name` ADD PRIMARY KEY ( `column` ) 

2.添加UNIQUE(唯一索引) :

ALTER TABLE `table_name` ADD UNIQUE ( `column` ) 

 

3.添加INDEX(普通索引) :

写法一:

ALTER TABLE `table_name` ADD INDEX index_name ( `column` )

写法二:

CREATE INDEX index_name ON `table_name`(`column1`,`column2`,`column3`) 

4.添加FULLTEXT(全文索引) :

ALTER TABLE `table_name` ADD FULLTEXT ( `column`) 

 

5.添加多列索引:

写法一:

ALTER TABLE `table_name` ADD INDEX index_name ( `column1`, `column2`, `column3` )

写法二:

CREATE INDEX index_name ON `table_name`(`column1`,`column2`,`column3`)

SHOW INDEX FROM `table_name`;-- 查询表索引

DROP INDEX index_name ON `table_name`;-- 删除索引

### MySQL 创建索引前后性能对比分析 #### 结构及数据量统计 在进行任何性能测试之前,了解的结构和所含的数据量是非常重要的。这有助于评估查询操作的影响范围以及预期的改进效果[^4]。 对于一个具体的例子而言,在创建索引之前的环境中,假设有一个包含大量记录的产品信息 `products`。该具有多个字段,其中包括产品ID (`product_id`) 和名称 (`name`) 等基本信息。当此格中的数据达到一定规模时(例如数百万条目),执行简单的查找命令可能会变得非常缓慢。 #### 未加索引前查询速度 在没有适当索引的情况下运行特定条件下的 SELECT 查询可能需要扫描整个来找到符合条件的结果集。这种全扫描过程会消耗大量的时间和资源,尤其是在处理大数据集的时候。实验明,在某些情况下,这样的查询耗时可达几秒钟甚至更久——比如一次查询花费了大约 **5.736秒** 来完成检索工作。 ```sql SELECT * FROM products WHERE name LIKE 'example%'; ``` 这段SQL语句用于从名为 `products` 的表里选出所有名字以 "example" 开头的商品项;然而由于缺乏必要的辅助工具即所谓的“索引”,所以不得不遍历每一个记录直至满足给定模式为止。 #### 添加适合的索引 为了改善上述情况并提高访问效率,可以在经常作为过滤条件使用的列上建立合适的索引。考虑到本案例中频繁依据商品名来进行筛选的需求,决定针对这一属性构建一个新的索引来加速匹配流程: ```sql CREATE INDEX idx_product_name ON products(name); ``` 这条指令会在 `products` 上的 `name` 列创建一个称为 `idx_product_name` 的新索引。一旦建立了这个索引之后再做同样的查询将会显著减少响应时间因为现在MySQL能够利用索引来快速定位到所需位置而无需逐一检查每一行的内容。 #### 加索引后查询速度 经过优化措施实施以后再次测量相同类型的请求发现其平均执行时间为 **1.889秒**, 显示出了明显的提速效果。这是因为有了预先准备好的路径指引使得数据库引擎可以直接跳转至目标区域而不是盲目地在整个集合内寻找答案。 ```sql EXPLAIN SELECT * FROM products WHERE name LIKE 'example%'; ``` 通过使用 EXPLAIN 关键字可以获取有关 SQL 语句如何被执行的信息,包括它是否正在使用刚刚创建的那个索引。如果一切正常的话,则应该能看到类似于 “Using index condition; Using where” 或者其他指示正采用高效方法的消息。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值