关于数据库索引-1

来源:互联网 发布:mac os 无法更新 编辑:程序博客网 时间:2024/06/02 05:22

先说说为什么写这个文章,去很多厂子面试的时候,他们一看我简历说上面写了用mysql开发过什么(其实我只用mysql存储过一些数据哇),然后他们会问你各自数据库的问题,我就基本上不会,数据库这个东西我4年前学的,4年前我可以告诉你这些,现在是4年后。可能对数据库的理解主要是包括,物理设计,逻辑设计,ER关系图,范式,二段锁,transaction之类的,东西还是挺多。对我来说,当时学数据库的时候,我觉的最主要还算设计方面的,关于ER关系转化,消除依赖关系,可是这些设计的东西厂里的面试官一般不会问,问的最多的还算这个“索引”!!!!

说到索引,很简单的概念,就好像一本书,书的目录就是索引,书里面的内容就好像你的数据。那么索引类型 主要有两大类hash,b-tree。hash一般用于equality selection的问题,b-tree一般用于range selection的问题。

再说说在某厂搜索部实习时内部使用的hash索引,要对大量的商品建立索引并查询,如果用户查找了“手机”,那么你要把带手机属性的商品全部展示出来,所以手机就可以当作一个主键,所以这种索引用到这这个型式   (手机:商品id->商品id->商品id.....) 这是一个倒排索引,也算是次索引的一种实习(去之前一直没理解倒排是什么概念,某天看之前数据结构课ppt,发现尼玛这些老师以前都讲过。),如果还有另外一条倒排表 (iphone: 商品id->商品id->商品id),那么如果用户输入“iphone 手机” 就可以通过hash这两个输入,找出这两个表,做一个并集合,就完成了查找,可能这个后台的查询架构中国很多很多人每天都会用到。倒排拉链可以参考下面的图。


fedora底下有什么好点的画图工具哇。这个画的好丑给个建议吧。


0 0
原创粉丝点击