添加索引

本文探讨了在数据库操作中创建和删除索引的重要性,特别强调了复合索引在提高查询效率方面的优势。通过实例展示了如何合理利用复合索引结构,如电话簿类的排序方式,以提升数据库查询速度。

create index indx_tablename_column on TABLENAME(column)  nologging parallel 8; 
创建索引的时候加入 nologging parallel 8 可提升创建索引的速度


创建索引的时候要注意不要遗忘了检查函数里涉及的字段是否需要创建索引


删除索引:

drop index tablename.indexname

如下图第三行所示索引为复合索引


不能理解为对TRIM(AKC190)和TRIM(YKA103)的两个单独索引

例如:在两个列上创建一个复合索引。一个列包含雇员的名字,另一个列包含雇员的姓氏,复合索引的结构与电话簿类似,它首先按姓氏对雇员 进行排序,然后按名字对所有姓氏相同的雇员进行排序。如果您知道姓氏,电话簿将非常有用,如果您知道名字和姓氏,电话簿则更为有用,但如果您只知道名字而 不知道姓氏,电话簿将没有用处。

<think>我们参考了多个引用,特别是引用[2]和引用[3]中提供了在MySQL中添加索引的具体SQL语句。 根据引用,添加索引主要有以下几种方法: 1. 使用ALTER TABLE语句添加索引 2. 在CREATE TABLE语句中创建表时直接定义索引 3. 使用CREATE INDEX语句(但注意引用中没有直接给出,但我们可以补充一个标准用法) 但是注意,引用[3]提到使用ALTER TABLE添加索引,引用[2]中同时给出了在创建表时添加索引和通过ALTER TABLE添加索引。 具体语句如下: 1. 使用ALTER TABLE添加索引(普通索引): ```sql ALTER TABLE table_name ADD INDEX index_name (column_name); ``` 或者添加唯一索引: ```sql ALTER TABLE table_name ADD UNIQUE (column_name); ``` 或者添加主键索引(如果主键不存在): ```sql ALTER TABLE table_name ADD PRIMARY KEY (column_name); ``` 2. 在创建表时添加索引: ```sql CREATE TABLE table_name ( column1 datatype, column2 datatype, ... INDEX index_name (column_name), UNIQUE index_name (column_name), PRIMARY KEY (column_name) ); ``` 3. 使用CREATE INDEX语句(引用中没有明确给出,但这是标准SQL方法): ```sql CREATE INDEX index_name ON table_name (column_name); ``` 创建唯一索引: ```sql CREATE UNIQUE INDEX index_name ON table_name (column_name); ``` 另外,引用[4]中也提供了类似的语句。 注意:不同数据库系统(如MySQL, PostgreSQL, SQL Server等)的语法可能略有不同,但用户的问题中引用都是关于MySQL的,因此我们以MySQL为例。 总结,在MySQL中添加索引的常用方法有: - 使用ALTER TABLE ... ADD INDEX ... - 使用CREATE INDEX ... ON ... - 在CREATE TABLE时定义索引 同时,我们还可以添加多列索引(组合索引): ```sql ALTER TABLE table_name ADD INDEX index_name (column1, column2); ``` 或者 ```sql CREATE INDEX index_name ON table_name (column1, column2); ``` 根据引用[2]和[3],删除索引的语句为: ```sql ALTER TABLE table_name DROP INDEX index_name; ``` 或者 ```sql DROP INDEX index_name ON table_name; ``` 查看索引: ```sql SHOW INDEX FROM table_name; ``` 现在,我们按照用户需求,整理添加索引的语句及方法。 </think> 在SQL中,添加索引是优化数据库查询性能的关键操作。以下是MySQL中添加索引的主要方法及对应语句: ### 一、添加索引的三种方法 1. **使用`ALTER TABLE`语句(最常用)** 添加普通索引: ```sql ALTER TABLE 表名 ADD INDEX 索引名 (列名); ``` 添加唯一索引: ```sql ALTER TABLE 表名 ADD UNIQUE (列名); ``` 添加多列索引: ```sql ALTER TABLE 表名 ADD INDEX 索引名 (列1, 列2); ``` 2. **创建表时直接定义索引** ```sql CREATE TABLE 表名 ( 列1 数据类型, 列2 数据类型, PRIMARY KEY (主键列), -- 主键索引 INDEX 索引名 (列名), -- 普通索引 UNIQUE 唯一索引名 (列名) -- 唯一索引 ); ``` 3. **使用`CREATE INDEX`语句(需注意兼容性)** ```sql CREATE INDEX 索引名 ON 表名 (列名); -- 普通索引 CREATE UNIQUE INDEX 索引名 ON 表名 (列名); -- 唯一索引 ``` ### 二、关键操作示例 1. **添加普通索引** ```sql ALTER TABLE employees ADD INDEX idx_name (last_name); ``` 2. **添加唯一索引**(确保列值不重复) ```sql ALTER TABLE users ADD UNIQUE (email); ``` 3. **添加多列组合索引** ```sql ALTER TABLE orders ADD INDEX idx_customer_date (customer_id, order_date); ``` 4. **删除索引** ```sql ALTER TABLE 表名 DROP INDEX 索引名; -- 或 DROP INDEX 索引名 ON 表名; ``` 5. **查看索引** ```sql SHOW INDEX FROM 表名; ``` ### 三、注意事项 1. **索引命名规范**:建议使用`idx_列名`格式(如`idx_email`)[^2][^3]。 2. **谨慎添加索引**:索引会降低写操作性能(INSERT/UPDATE/DELETE),建议仅对频繁查询的列添加索引。 3. **组合索引顺序**:多列索引中,将高区分度的列放在前面可提升效率[^4]。 ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值