• 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 的列与索引不匹配,可能导致索引失效。

  • 相关阅读:
    【语义分割】2017-PSPNet CVPR
    redis-sentinel部署手册及Java代码实现
    前端稳定性建设
    基于SSH开发学生公寓管理系统
    Vue、React和小程序中的组件通信:父传子和子传父
    12-IO流1-File类、绝(相)对路径、
    HDLbits刷题总结
    【送java面试题】掌握JVM诊断命令,稳定Java应用
    整理笔记——MOS管、三极管、IGBT
    连流量染色都没有,你说要搞微服务?
  • 原文地址:https://blog.csdn.net/m0_65347933/article/details/140963863