如果查找数据29,那么首先会把硬盘块由磁盘加载到内存此时发生一次io,在内存中用二分查找确定29在17和35之间,锁定磁盘块1的p2指针,内存时间因为非常短(相比磁盘的io)可以忽略不计,通过磁盘块1的p2指针的磁盘地址把磁盘块3由磁盘加载到内存,发生第二次io,29在26和30之间,锁定磁盘块3的p2指针,通过指针加载磁盘块8到内存,发生第三次io,同时内存中做二分查找找到29,结束查询,总计三次io.真实的情况是,3层的b+树可以表示上百万的数据,如果上百万的数据查找只需要三次io,性能提高将是巨大的,如果没有索引,每个数据项都要发生一次io,那么总共需要百万次的io,显然成本非常非常高。
- 情感问答
- 答案列表
mysql 树查询:mysql为什么用b 树[朗读]
两者的算法思路其实很像:比中间的小就在剩下的左边,大就在剩下的右边找但是:二叉树查找一般习惯是在链式存储上进行,为一个树形结构二分查找一定在顺序存储上进行。
mysql查询树状菜单有多少层java版的实际例子.类同你说的情况privatevoidfindchildlist(assettypeparent,listlist){stringhql="fromassettypeawherea。
createtablet(cidvarchar(5),pidvarchar(5),cnamevarchar(20))goinsertintotvalues具体你还可以优化,把like里面的2换成其他cid既可查询对应的下属信息。
java版的实际例子.类同你说的情况privatevoidfindchildlist(assettypeparent,list<if(childs.size()>0){list.addall(childs);this.findchildlist(assettype,list);//递归查询节点。