zoukankan      html  css  js  c++  java
  • 数据库索引

    数据库索引(以 mysql)
    索引是对数据库表中的一列或多列的值进行排序的一种结构,使用索引可快速访问数据库表中特定的信息

    索引是对数据库表中的一列或多个列的值进行排序的结构。
    如 select * from name where id = 10000.
    如果没有索引,必须遍历整个表,直到ID等于 10000的这一行被找到为止,有了索引后(必须在ID这一列上建立索引),在索引中查找,但索引是经过某种算法优化过的,查找次数

    要少得多。因此,索引是用来定位的.

    索引分为聚簇索引和非聚簇索引两种。聚簇索引是按照数据存放的物理位置为顺序的。而非聚簇索引就不一样了,聚簇索引能提前多行的检索的速度,而非聚簇索引对于单行检索

    很快。

    建立索引的目的是加快对表的记录的查找或排序
    为表设置索引要付出代价,一是增加了数据库的存储空间,二是插入和修改数据时要花费较多的时间(因为索引也要随之变动)

    创建索引可以大提高系统性能,
    第一,通过创建唯一性索引,可以保证数据库表的每一行数据的唯一性。
    第二,可以大大加快数据的检索速度,(主要原因)
    第三,加快表和表之间的连接,特别是实现数据的参考完整性方面特别有意义。
    第四,在使用分组和排序子句进行数据检索时,同样可以显著减少查询中分组和排序的时间。
    第五,通过使用索引,可以在查询的过程中,使用优化隐藏器,提高系统的性能。

    索引是建立在数据库表的某些列的上面的。一般来说,应该在这些列上创建索引:
    经常需要搜索的列上,可以加快搜索速度。
    在作为主键的列上,强制该列的唯一性和组织表中数据的排列结构。
    在经常用在连接的列上,这些列主要是一些外键,可以加快连接的速度,在经常需要根据范围进行搜索的列上创建索引,因为索引已经排序,其指定的范围是连续的。
    在经常需要排序的列上创建索引,因为索引已经排序,这样查询可以利用索引的排序,加快排序的查询时间。
    在经常使用 where 子句中的列上面创建索引,加快条件的判断速度。

    索引的大分类:分为聚簇索引和非聚族索引。聚簇索引只有一个,该索引中的键值的逻辑顺序决定了表中相应行的物理顺序。非聚簇索引中的索引的逻辑顺序与磁盘上的物理存储顺

    序不同。



    聚簇索引:(一个表只能有一个)
    create clustered index 索引名 on 表名 (列名);
    非聚簇索引:
    create unclustered index 索引名 on 表名 (列名)

    具体分类及创建方法:
    普通索引:
    create index 索引名 on 表名 (列名);

    唯一索引:值唯一,但可有空值(建议用主键代替或唯一约束)
    create unique coustered index  索引名 on 表名(列名1[,列名2....]);

    主键索引:特殊的唯一索引,不允许有空值班。一般建表时同时创建,一个表只能有一个主键
    create table(id, name,age, primary key(id,name));

    组合索引:
    create index 索引名 on 表名 (列名1[,列名2....]);


  • 相关阅读:
    截取字符串
    VC++ PathFindFileName函数,由文件路径获得文件名
    获取GetOpenFileName多选文件名
    WideCharToMultiByte和MultiByteToWideChar函数的用法(转载)
    map set iterator not incrementable 解决办法
    定义c/c++全局变量/常量几种方法的区别(转载)
    如何禁止同IP站点查询和同IP站点查询的原理分析 Robots.txt屏蔽BINGBOT
    JavaScript 文件操作方法详解
    nginx日志配置
    php的strip_tags,htmlspecialchars,htmlentities,stripslashes,addslashes解释
  • 原文地址:https://www.cnblogs.com/lin3615/p/3543613.html
Copyright © 2011-2022 走看看