zoukankan      html  css  js  c++  java
  • 索引

    1、数据库索引是什么,有什么用

    数据库索引是对数据库表中一列或多列的值进行排序的一种结构,使用索引可快速访问数据库表中的特定信息。如果想按特定职员的姓来查找他或她,则与在表中搜索所有的行相比,索引有助于更快地获取信息。

    索引的一个主要目的就是加快检索表中数据的方法,亦即能协助信息搜索者尽快的找到符合限制条件的记录ID的辅助数据结构。

    2、数据库索引的用法

    当表中有大量记录时,若要对表进行查询,第一种搜索信息方式是全表搜索,是将所有记录一一取出,和查询条件进行一一对比,然后返回满足条件的记录,这样做会消耗大量数据库系统时间,并造成大量磁盘I/O操作;

    第二种就是在表中建立索引,然后在索引中找到符合查询条件的索引值,最后通过保存在索引中的ROWID(相当于页码)快速找到表中对应的记录。  

    索引是一个单独的、物理的数据库结构,它是某个表中一列或若干列值的集合和相应的指向表中物理标识值的数据页的逻辑指针清单。

    扩展资料:

    一、索引的原理:

    对要查询的字段建立索引其实就是把该字段按照一定的方式排序;建立的索引只对该字段有用,如果查询的字段改变,那么这个索引也就无效了,比如图书馆的书是按照书名的第一个字母排序的,那么你想要找作者叫张三的就不能用改索引了;还有就是如果索引太多会降低查询的速度。

    二、数据库索引的特点:

    1、避免进行数据库全表的扫描,大多数情况,只需要扫描较少的索引页和数据页,而不是查询所有数据页。

    而且对于非聚集索引,有时不需要访问数据页即可得到数据。

    2、聚集索引可以避免数据插入操作,集中于表的最后一个数据页面。

    3、在某些情况下,索引可以避免排序操作。

    参考资料:百度百科-数据库索引

     

    总结:索引就是相当于针对一张表,某些字段,建立一个排序。

    查询时,若查询条件涉及索引对应的字段,先根据查询的索引字段在排序中找到符合条件的数据页码,然后再根据数据页码快速找到表中对应的数据清单。

    若有非索引的查询字段,再对数据清单查询。

    数据库索引原理

    聚集索引:就是主键,一张表只能有一个。

    CREATE UNIQUE INDEX customer_name ON customer(name);--在customer表上的name列创建唯一性索引

    非聚集索引:

    包括单字段索引和多字段索引(复合索引)
    即常规用到的索引
    给表中多个字段加上索引 , 那么就会出现多个独立的索引结构,每个索引(非聚集索引)互相之间不存在关联每次给字段建一个新索引, 字段中的数据就会被复制一份出来, 用于生成索引。 因此, 给表添加索引,会增加表的体积, 占用磁盘存储空间

    CREATE INDEX name_nationkey ON customer(name,nationkey);--customer表上的name和nationkey列创建复合索引

     

    --删除索引
    if exists(select * from sysindexes where name=索引名称)
    drop index 索引名称 on 表名;
    go

     
    聚集索引与非聚集索引的区别
    • 聚集索引可以查到需要查找的数据
    • 通过非聚集索引可以查到记录对应的主键值 , 再使用主键的值通过聚集索引查找到需要的数
    • 不管以任何方式查询表, 最终都会利用主键通过聚集索引来定位到数据, 聚集索引(主键)是通往真实数据所在的唯一路径

    1)索引的数据结构:非二叉平衡树(B树、B+树)
    2)表要加主键(聚集索引)
    3)加索引后会使查询变快
    先通过属性索引找到需要的主键值,再通过聚集索引找到需要的数据,不需要扫描所有数据
    4)加索引后会使写入、修改、删除变慢
    平衡树这个结构必须一直维持在一个正确的状态, 增删改数据都会改变平衡树各节点中的索引数据内容,破坏树结构, 因此,在每次数据改变时, DBMS必须去重新梳理树(索引)的结构以确保它的正确
    5)有时需在多个字段上建索引,可以大大提高查询效率

  • 相关阅读:
    (十六)分页
    (十五)条件查询
    (十四)hibernate逆向工程
    (十三)信息发布管理
    (十二)系统权限
    (十一)角色管理
    (十)系统异常处理
    (九)表单校验
    POI操作Excel
    (八)头像上传
  • 原文地址:https://www.cnblogs.com/anyihen/p/12327632.html
Copyright © 2011-2022 走看看