zoukankan      html  css  js  c++  java
  • MySQL面试(二)

    1、为什么索引遵循最左匹配原则?

      当B+树的数据项是符合的数据结构,比如(name,age,sex)的时候,B+树是按照从左到右的顺序建立搜索树的。比如当(张三,20,F)这样的数据来检索的时候,b+树会优先比较name来确定下一步的所搜方向,如果name相同再依次比较age和sex,最后得到检索的数据;但当(20,F)这样的没有name的数据来的时候,B+树就不知道下一步该查哪个节点,因为建立搜索树的时候name就是第一个比较因子,必须要先根据name来搜索才能知道下一步去哪里 查询。比如当(张三,F)这样的数据来检索时,B+树可以用name来指定搜索方向,但下一个字段age的缺失,所以 只能把名字等于张三的数据都找到,然后再匹配性别是F的数据了, 这个是非常重要的性质,即索引的最左匹配 特性。

    2、主键索引 唯一索引 普通索引的区别?

    主键是一种约束,索引是一种特殊的文件,两者在本质上是不同的。

    索引是一种特殊的文件,它们包含着对所有记录的引用指针。索引可以极大地提高数据查询速度(好比一本书的目录)但是会降低插入删除更新表的速度,因为在执行这些操作是,还要操作索引文件用来维护,所以说索引不是建的越多越好而是要建在合理的字段。

    索引的遵循原则
    1、最左侧原则,表的最左侧的一列,往往数据不会发生改变,不影响其他列的数据;
    2、命名短小原则,索引命名过长会使索引文件变大损耗内存

    普通索引:(由关键字KEY或INDEX定义的索引)的唯一任务是 加快对数据的访问速度。普通索引允许被索引的数据列包含重复的值。如果能确定某个数据列将只包含彼此各不相同的值,在为这个数据列常创建索引时应该用就用关键字UNIQUE把他定义成一个唯一索引。也就是说,唯一索引可以保证数据记录的唯一性

    唯一索引:不允许两行具有相同的索引值。

    主键:是一种特殊的唯一索引,一张表中只能定义一个主键索引,通常有一列或列组合用于唯一标识一条记录,使用关键字PRIMARY KEY来创建。为表定义一个主键自动创建主键索引(聚簇索引)。当在查询中使用主键索引时,它还允许快速访问数据

    联合索引 :可以覆盖多个数据列,像INDEX(columnA, columnB)索引,这就是联合索引。

    主键索引和唯一索引的区别:
    (1) 对于主键/unique constraint , oracle/sql server/mysql等都会自动建立唯一索引
    (2) 主键不一定只包含一个字段,所以在主键的其中一个字段唯一索引还是有必要的;
    (3) 主键可作外键,唯一索引不可;
    (4) 主键不可为空,唯一索引可;
    (5) 主键可是多个字段的组合
    (6) 主键与唯一索引不同的是:
    a.有not null属性;
    b.每个表只能有一个
    (7) 主键索引一定是唯一索引, 唯一索引不是主键索引
    (8) 主键可以与外键 构成 参照完整性约束防止数据不一致

  • 相关阅读:
    Spring3整合Quartz实现定时作业
    伪静态URLRewrite学习笔记
    VC 获取系统特殊文件夹的路径如:系统目录,桌面等
    正反向代理
    过虚拟机检测
    PDB符号文件信息
    Win64 驱动内核编程-33.枚举与删除对象回调
    Windows 反调试技术——OpenProcess 权限过滤
    Win10如何开启蓝屏记录?Win10开启蓝屏信息记录的方法
    Win7 x64下进程保护与文件保护(ObRegisterCallbacks)
  • 原文地址:https://www.cnblogs.com/HHR-SUN/p/11804766.html
Copyright © 2011-2022 走看看