zoukankan      html  css  js  c++  java
  • 数据库主键和外键及索引

    1、主键:

    若某一个属性组(注意是组)能唯一标识一条记录,该属性组就是一个主键。主键不能重复,且只能有一个,也不允许为空。定义主键主要是为了维护关系数据库的完整性。

    2、外键:

    外键用于与另一张表的关联,是能确定另一张表记录的字段。外键是另一个表的主键,可以重复,可以有多个,也可以是空值。定义外键主要是为了保持数据的一致性。

    3、索引:

    索引是对表中一个或多个列的值进行排序的结构。

    1) 应该创建索引的列的特点:

    ① 在经常需要搜索的列上创建索引,可以加快搜索的速度;

    ② 在作为主键的列上创建索引,强制该列的唯一性;

    ③ 在经常用在连接的列上创建索引,主要是一些外键,可以加快连接的速度;

    ④ 在经常需要根据范围进行搜索的列上创建索引,因为索引已经排序,其指定的范围是连续的;在经常需要排序的列上创建索引,因为索引已经排序,可以利用索引的排序加快查询;

    ⑤ 在经常使用在WHERE子句中的列上创建索引,加快条件的判断速度。 

    2) 不应该创建索引的列的特点:

    ① 在查询中很少使用的列上不应该创建索引,因为这些列很少使用到,因此有索引或无索引,并不能提高查询速度,相反由于增加了索引,反而降低了系统维护速度,增大了空间需求;

    ② 在只有很少数据值的列上不应该创建索引,很少数据值的列如性别等,在查询的结果中,结果集的数据行占了表中数据行的很大比例,即需要在表中搜索的数据行的比例很大,增加索引,并不能明显加快检索速度;

    ③ 当修改性能远远大于检索性能时,不应该创建索引,因为改性能和检索性能是互相矛盾的,当增加索引时,会提高检索性能,但会降低修改性能,当减少索引时,会提高修改性能,但会降低检索性能。因此,当修改性能远大于检索性能时,不应该创建索引。

    3) 可以在数据库设计器中创建三种索引:

    ① 唯一索引:

    不允许其中任何两行具有相同索引值的索引。

    ② 主键索引:

    表的某一列或列组合,其值唯一标识表中的每一行,该列或列组合称为表的主键。为表定义主键将自动创建主键索引,主键索引是唯一索引的特定类型。该索引要求主键中的每个值都唯一。

    ③ 聚集索引:

    聚集索引:聚集索引表示表中存储的数据按照索引的顺序存储。由于聚集索引规定数据在表中的物理存储顺序,因此一个表只能包含一个聚集索引。

    聚集索引实例:字典默认按字母顺序排序,如知道某个字的读音可根据字母顺序快速定位。

    非聚集索引:非聚集索引表示数据存储在一个地方,索引存储在另一个地方,索引带有指针指向数据的存储位置,需要查询两个地方才能查找到数据。一个表可以包含多个非聚集索引,可以为查找数据时常用的每个列创建一个非聚集索引。

    非聚集索引实例:如需查询某个生僻字,则需按字典前面的索引,如按偏旁进行定位,找到该字对应的页数,再打开对应页数找到该字。

    与非聚集索引相比,聚集索引通常提供更快的数据访问速度,但对数据更新影响较大。

    4)索引的优点:

    加快对数据的检索。

    5)索引的缺点:

    ① 减慢数据录入的速度;

    ② 增加了数据库的尺寸大小。

    4、主键和外键的关系:

    外键是另一个表的主键,主键是可以被外键有效引用的对象。若A表中的一个字段,是B表的主键,则它可以是A表的外键。

    5、主键和外键以及索引的区别:

    定义

    作用

    个数

    主键

    唯一标识一条记录,不能有重复,不允许为空

    保证数据完整性

    只能有一个主键

    外键

    另一表的主键,可以重复,允许为空

    和其他表建立联系

    可以有多个外键

    索引

    没有重复值,但可以有一个空值

    提高查询排序的速度

    可以有多个唯一索引

  • 相关阅读:
    xls与csv文件的区别
    青音,经典爱情语录
    win7用户账户自动登录方法汇总
    How to using Procedure found Lead Blocker
    FTS(3) BSD 库函数手册 遍历文件夹(二)
    FTS(3) BSD 库函数手册 遍历文件夹(一)
    DisplayMetrics类 获取手机显示屏的基本信息 包括尺寸、密度、字体缩放等信息
    About App Distribution 关于应用发布
    FTS(3) 遍历文件夹实例
    OpenCV 2.1.0 with Visual Studio 2008
  • 原文地址:https://www.cnblogs.com/yiweiyihang/p/8340513.html
Copyright © 2011-2022 走看看