逍遥一派 发表于 2015-1-16 22:14:53

MYSQL网页编程之MySQL中两种索引Hash与B-Tree的区分

尽管MySQL也有一个认证培训项目,但是它的培训却要比Oracle或MS-SQL相差很远。尽管有的使用MySQL的用户表示,MySQL很容易上手,但是对于具有企业级数据库需求的用户来说,  MySQLHash索引和B-Tree索引的区分事实在那里呢?信任良多人都有如许的疑问,下文对二者的区分举行了具体的剖析,供您参考。
  MySQLHash索引布局的特别性,其检索效力十分高,索引的检索能够一次定位,不像B-Tree索引必要从根节点到枝节点,最初才干会见到页节点如许屡次的IO会见,以是Hash索引的查询效力要远高于B-Tree索引。
  可能良多人又有疑问了,既然Hash索引的效力要比B-Tree高良多,为何人人不都用Hash索引而还要利用B-Tree索引呢?任何事物都是有两面性的,Hash索引也一样,固然Hash索引效力高,可是Hash索引自己因为其特别性也带来了良多限定和坏处,次要有以下这些。
  (1)MySQLHash索引仅仅能满意"=","IN"和"<=>"查询,不克不及利用局限查询。
  因为MySQLHash索引对照的是举行Hash运算以后的Hash值,以是它只能用于等值的过滤,不克不及用于基于局限的过滤,由于经由响应的Hash算法处置以后的Hash值的巨细干系,其实不能包管和Hash运算前完整一样。
  (2)MySQLHash索引没法被用来制止数据的排序操纵。
  因为MySQLHash索引中寄存的是经由Hash盘算以后的Hash值,并且Hash值的巨细干系其实不必定和Hash运算前的键值完整一样,以是数据库没法使用索引的数据来制止任何排序运算;
  (3)MySQLHash索引不克不及使用部分索引键查询。
  关于组合索引,Hash索引在盘算Hash值的时分是组合索引键兼并后再一同盘算Hash值,而不是独自盘算Hash值,以是经由过程组合索引的后面一个或几个索引键举行查询的时分,Hash索引也没法被使用。
  (4)MySQLHash索引在任什么时候候都不克不及制止表扫描。
  后面已晓得,Hash索引是将索引键经由过程Hash运算以后,将Hash运算了局的Hash值和所对应的行指针信息寄存于一个Hash表中,因为分歧索引键存在不异Hash值,以是即便取满意某个Hash键值的数据的纪录条数,也没法从Hash索引中间接完成查询,仍是要经由过程会见表中的实践数据举行响应的对照,并失掉响应的了局。
  (5)MySQLHash索引碰到大批Hash值相称的情形后功能其实不必定就会比B-Tree索引高。
  关于选择性对照低的索引键,假如创立Hash索引,那末将会存在大批纪录指针信息存于统一个Hash值相干联。如许要定位某一笔记录时就会十分贫苦,会华侈屡次表数据的会见,而形成全体功能低下。
<Pstyle="TEXT-INDENT:2em">
也许最好的策略是以不变应万变:给客户他们所需要的,不多也不少。如果MySQL学习教程适合他们,他们就不应该买别的工具。事实上,云计算产业一直推崇自助服务,但提供这些服务的公司已经开始认识到解决方案提供商推销他们商品的价值。

再见西城 发表于 2015-1-19 05:58:54

可以动态传入参数,省却了动态SQL的拼写。

逍遥一派 发表于 2015-1-25 18:58:16

可能有的朋友会抱怨集成的orderby,其实如果使用ranking函数,Orderby是少不了的。如果担心Orderby会影响效率,可以为orderby的字段建立聚集索引,查询计划会忽略orderby操作(因为本来就是排序的嘛)。

只想知道 发表于 2015-2-3 13:57:36

代替了原来VB式的错误判断。比Oracle高级不少。

若相依 发表于 2015-2-9 03:14:14

但换公司用MSSQL2K感觉自己好像根本就不了解MSSQL。什么DTS触发器以前根本没用过。

兰色精灵 发表于 2015-2-26 20:06:09

是否碎片会引发效率问题?这都是需要进一步探讨的东西。varbinary(max)代替image也让SQLServer的字段类型更加简洁统一。

因胸联盟 发表于 2015-3-8 17:29:44

只能告诉你,学好数据库语言和原理,多见识几种数据库软件,比一棵树上吊死要好。

愤怒的大鸟 发表于 2015-3-16 09:08:52

如果你是从“学习某一种数据库应用软件,从而获得应聘的资本和工作机会”的角度来问的话。

老尸 发表于 2015-3-22 22:08:12

groupby子句可以将查询结果分组,并返回行的汇总信息Oracle按照groupby子句中指定的表达式的值分组查询结果。
页: [1]
查看完整版本: MYSQL网页编程之MySQL中两种索引Hash与B-Tree的区分