SQL中的索引

目录

一、类型

二、优点

三、缺点

四、索引的应用

五、使用注意事项

六、索引创建

 1. 创建索引的基本语法

 2. 选择合适的列

 3. 复合索引

七、索引失效

 1. 查询条件不符合索引

 2. 数据类型不匹配

 3. 使用了NULL值

 4. 大数据量时的复杂查询

 5. ORDER BY和GROUP BY


数据库的索引是一个数据结构,旨在提高数据库检索数据的速度。索引通过在数据库表中维护一个有序的数据结构,从而加快查询操作的效率。以下是关于数据库索引的一些关键点:

一、类型

(1)单列索引:仅涉及表的单一列。

(2)复合索引:涉及多个列的索引。

(3)唯一索引:确保索引的列中的所有值都是唯一的。

(4)全文索引:用于快速文本查找,通常在处理大量字符串数据时使用。

二、优点

(1)加速数据检索,特别是在大型数据集中的查询。

(2)提高排序和过滤操作的性能。

三、缺点

(1)增加存储开销。

(2) 插入、删除和更新操作时,可能导致性能下降,因为需要维护索引。

四、索引的应用

(1)查询优化:通过创建索引,可以使得数据库优化器选择更高效的查询计划。
(2)提高排序性能:通过适当的索引,排序操作的效率可以显著提高。

五、使用注意事项

(1)不应在每一列上创建索引,选择性地在查询频繁的列上创建索引。

(2)定期监控和维护索引,以确保其性能最佳。

六、索引创建

创建索引可以提高查询效率,但需要正确选择适合的列和索引类型。以下是一些创建索引的基本步骤和注意事项:

 1. 创建索引的基本语法

CREATE INDEX index_name ON table_name (column_name);

 2. 选择合适的列

在选择索引列时,应考虑:

(1)高选择性:索引列的值应该有足够的唯一性,以提高查询效率。例如,使用身份证号码、电子邮件等高选择性字段作为索引优于性别、地区等低选择性字段。

(2)查询频率:经常出现在 `WHERE`、`JOIN`、`ORDER BY` 或 `GROUP BY` 子句中的列,应该考虑创建索引。

(3)选择正确的索引类型

        根据数据的性质和查询的特点选择适合的索引类型:

         1)B树索引:适合大多数查询。

         2)全文索引:适合对文本内容进行复杂查询。

3. 复合索引

如果查询中涉及多个列,可以考虑创建复合索引,如:

CREATE INDEX index_name ON table_name (column1, column2);

七、索引失效

虽然索引可以显著提升数据库的查询性能,但在某些情况下,索引可能会失效,导致查询优化器放弃使用索引而采用全表扫描,影响性能。以下是一些常见的导致索引失效的情况:

 1. 查询条件不符合索引

(1)使用了不等式(!=)或 LIKE '%text%,会导致索引失效。

(2)对索引字段进行了函数操作,例如 :WHERE UPPER(column_name) = value。

 2. 数据类型不匹配

在查询时,如果与索引列的数据类型不一致,可能导致索引失效。例如,整数字段用字符串类型查询。

3. 使用了NULL值

 某些数据库系统在处理 NULL 值时可能导致索引失效。

4. 大数据量时的复杂查询

如果查询返回的数据量超过一定比例,数据库优化器可能选择全表扫描而非使用索引。

 5. ORDER BY和GROUP BY

在某些情况下,ORDER BY 和 GROUP BY 的列与索引不匹配,可能导致索引失效。

  • 12
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值