• 数据库索引


    数据库索引

    索引是一种数据结构,是帮助数据库高效获取数据的数据结构 (在数据之外,数据库系统还满足着特定查找算法的数据结构,这些数据以某种方式引用(指向)数据,这样就可以在这些数据结构上实现高级查找算法,这些数据结构就叫索引)

    索引的优势有哪些

    • 数据库IO的次数: 提高数据索引的效率,降低数据库IO的成本
    • 索引排序:通过索引列对数据可进行排序,降低排序成本,降低了CPU的消耗

    索引的缺点有哪些

    • 内存空间: 因为索引也是一张表,该表保存了主键与索字段,并指向实体表的记录,所以索引也是要占用空间的
    • 表的更新速度: 虽然索引大大提高了查询速度,但同时还会降低更新表的速度,如对表进行INSERT、UPDATE和 DELETE,
      因为更新表时,(mysql为例)MySQL不仅要保存数据,还要保存一下索引文件,而每次更新添加了新的字段都会调整,因为更新所带来的键值变化后的索引信息增加

    索引只是提高效率的一个因素,如果MySQL有大量数据的表,就需要花时间好好研究建立一个更优秀的索引,或优化查询

    基本语法:

    创建:
    CREATE [UNIQUE] INDEX indexName ON mytable{(columnname(length))}
    
    ALTER mytable ADD [UNIQUE] INDEX [indexName] ON (columnname(length))
    
    
    删除:
    DROP INDEX[indexName] ON mytable
    
    查看:
    SHOW INDEX FROM table_name
    
    使用ALTER命令 **
    有四种方式来添加数据表的索引:
    
    ALTER TABLE tbl_name ADD PRIMART KEY(column_list);
    语句中添加一个主键,这意味着索引值必须是唯一的,且不能为NULL
    
    ALTER TABLE tbl_name ADD UNIQUE index_name(column_list);
    这条语句创建索引的值必须是唯一的(除了NULL外,NULL可能会出现多次)
    
    ALTER TABLE tbl_name ADD INDEX index_name(column_list);
    添加普通索引,索引值可出现多次
    
    ALTER TABLE tbl_name ADD FULLTEXT index_name(column_list);
    该语句指定索引为FULLTEXT,全局索引
    
    
    

    哪些情况需要创建索引 **

    • 主键自动自动建立唯一索引

    • 频繁作为条件的字段应该创建索引

    • 查询中与其他表关联的字段,外键关系建立索引

    • 单键/组合索引的选择问题,Why? (高并发下倾向建立组合索引)

    • 查询中排序的字段(排序字段若通过索引去访问将大大提高排序速度)

    • 查询中统计或者分组字段

    • 频繁更新的字段不适合创建索引(因为每次更新不单单是更新了记录,还会更新索引)

    • WHERE 条件里用不到的字段不创建索引

    哪些情况下不创建索引

    • 表记录太少

    • 经常增删改的表: why? :提高了查询速度,同时降低更新标的速度,进行 INSERT,UPDATE,DELETE更新表时,既要更新保存数据,又要更新索引

    • 注意,如果某个数据列包含许多重复的内容,为它建立索引就没有太大的实际效果

  • 相关阅读:
    C# Lambda表达式 (转)
    用C#读取txt文件的方法(转)
    c#中stringbuilder的使用(转)
    c# 日期和时间的获取(转)
    C# List<T>用法 泛型 (转)
    indent format codes
    格式化输入输出 小结
    putty connection manager 一些问题的整理
    linux 网络的一些书籍
    Oracle学习笔记
  • 原文地址:https://www.cnblogs.com/nineberg/p/12264428.html
Copyright © 2020-2023  润新知