java+python,有java基础学python
一、面试官的考点指数是多少?
索引是一种提高数据库查询效率的数据结构。可以比作一本字典的目录,可以很快找到相应的记录。索引通常存储在磁盘上的文件中,占用物理空间。水能载舟,亦能覆舟。使用合适的索引可以提高查询效率,而过多的索引会影响插入和更新数据库表的功能。二、指数的种类有哪些?
维度B树索引:所有数据存储在叶节点上,复杂度为o(logn),适合范围查询。Hdsdqc索引:适合等价查询,检索效率高,可一次到达。全文索引:MyISAM和InnoDB都支持使用全文索引,它通常是通过使用文本类型char、text和varchar创建的。r树索引:用于为GIS数据类型的空间索引物理存储维度创建聚集索引。索引是用主键创建的索引,叶节点包含表中的数据。非聚集索引:非聚集索引是用非主键创建的索引,叶节点包含主键和索引列。逻辑主键索引:特殊的唯一索引,不能为空。通用索引:MySQL的基本索引类型。允许空值和重复值。合并索引:在多个字段中创建的索引,遵循最左前缀原则。唯一索引:索引列中的值必须是唯一的,但允许空值。空间索引:MySQL5.7及更高版本支持空间索引,遵循OpenGIS几何数据模型的规则。3.面试官为什么选择B树作为索引结构?我们可以从这几个维度来看这个问题。查询是否足够快,效率是否稳定,存储多少数据,搜索磁盘多少次等等。为什么不是hdsdqc结构?为什么不是二叉树,为什么不是平衡二叉树,为什么不是B树,而是B树?
当我们编写业务SQL查询时,大部分都是范围查询。以下是SQL
select * from employee where age between 18 and 28;为什么不用hdsdqc结构?我们知道hdsdqc结构类似于k-v结构。也就是说,键和值是一一对应的关系。那可以用等值查询,但是不能查询范围。
为什么不用二叉树呢?请回忆一下关于二叉树的知识。所谓的二叉树,特点如下:
每个节点最多有两个子树,分别叫做左子树和右子树。左侧子节点的值小于当前节点的值,其值大于右侧子节点的值的节点称为根节点,没有子节点的节点称为叶节点。在我们的脑海中,很容易看到这个二叉树的结构图。
但是,有一些特殊的二叉树,可能是:
如果二叉树专用于链表,就相当于全表扫描。那么指数是干什么的呢?所以一般的二叉树不适合作为索引结构。
为什么不用平衡二叉树呢?平衡二叉树的特点:它也是二叉树的搜索树,任意节点的两个子树的高度之差最大为1。因此,它不会关注链表。
但是,那又怎么样呢?
插入或更新平衡二叉树,需要保持左右手平衡,所以维护成本高,树的数量多。由于数据存在于磁盘上,作为索引结构使用,每次从磁盘读取一个节点,IO操作的次数都会增加。为什么不用B树?数据量越大,平衡二叉树的高度越高,IO越高。那么,为什么不选择同样的数据量,高度更矮的B树呢?
与平衡二叉树相比,B树可以存储更多的数据并降低其高度。但是最后选择B树呢?因为B树是B树的升级版:
B树的非叶节点不存储数据,只存储键值,而B树的节点不仅存储键值,还存储数据。innodb页面的默认大小是16KB。如果不保存数据,会保存更多的键值,对应树(节点的子节点树)的顺序会变大。树又低又胖,所以可以检索数据,访问磁盘。B树索引中的所有数据都存储在叶节点上,数据按顺序排列并链接。然后,Web tree使范围搜索、排序搜索、分组搜索和重新搜索变得非常简单。以上10-59000是我的面试流程。这次面试我收集了很多面试问题。反正我已经面试过了,免费分享一下。
有需要的朋友:写在最后
下面是一些问题的截图。
分担费用。
有需要的朋友:关注一下,然后点击这里即可免费领取
下面是一些问题的截图。
郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。