美文网首页
数据库索引

数据库索引

作者: sandy测试路 | 来源:发表于2019-03-29 12:21 被阅读0次

    索引是对数据库表中的一列或者多列的值进行排序的一种 数据结构 ,使用索引可以快速访问数据库表中的特定信息(避免了全表扫描的耗时)。

    • 索引分为: 聚簇索引非聚簇索引 。聚簇索引是按照数据存放的物理位置为顺序的,非聚簇索引不一样;聚簇索引能够提高多行检索的速度,非聚簇索引对于单行的检索很快。
    • 常见索引类型: 主键索引 (唯一索引的特例), 唯一索引 (关联的列不能有2行相同的值), 聚集索引 (表中行的物理顺序与键值索引的逻辑顺序相同。一个表只能包含一个聚集索引)

    优点:

    • 例如:SELECT * FROM projects WHERE id=110,没有索引时需要全表扫描projects表直到找到符合项,如果给id列添加索引,则只需要在索引列进行搜索,并且因为索引列是经过某种算法优化过的,所以查找次数要小很多。
    1. 创建唯一性索引,可以保证数据库表中每一行数据的唯一性
    2. 可以大大加快数据的检索速度
    3. 可以加速表与表之间的链接,特别是再实现数据的参考完整性方面

    缺点:

    1. 创建索引和维护索引需要耗时,并且随着数据量的增加时间会增加
    2. 索引需要占据一定的物理空间
    3. 对表中的数据进行修改时(增加,删除,更新),索引也需要进行动态维护,降低了数据的维护速度。
    实践
    • SHOW INDEX FROM table_name,显示某表上的所有索引
    • CREATE INDEX index_name ON table_name(col_name),为表的某列添加索引
    • CREATE UNIQUE INDEX index_name ON table_name(col1, col2),为表的某列添加唯一索引
    • ALTER TABLE table_name DROP INDEX index_name,修改表:删除表的某个索引
    SHOW INDEX FROM projects;                          # 显示projects表上的所有索引
    
    CREATE INDEX index_school_address ON schools(address DESC)  # 以降序索引某列的值
    CREATE UNIQUE INDEX index_name ON schools(name)    # 添加唯一索引
    
    ALTER TABLE schools DROP index_name ON schools     # 删除索引
    DROP INDEX index_name ON schools                   # 同上
    
    • index_type索引类型: BTREE

    • Non_unique是否不唯一: 0表示唯一索引,1表示不是唯一索引

    • key_name索引名称: PRIMARY(主键索引)/xxx

    • Column_name索引作用的列:一列或者多列(如果某几个条件经常需要组合筛选则可以在这几个列上建立索引)

    • 一个索引可以包含多个列,同一个列也可以对应多个索引

    • navicat工具:在ctrl+d设计表页面,点击索引,可以查看当前列上的索引(索引名称、索引类型和索引方法等)

    相关文章

      网友评论

          本文标题:数据库索引

          本文链接:https://www.haomeiwen.com/subject/syclbqtx.html