• 设为首页
  • 点击收藏
  • 手机版
    手机扫一扫访问
    迪恩网络手机版
  • 关注官方公众号
    微信扫一扫关注
    公众号

delphihashmap

原作者: [db:作者] 来自: [db:来源] 收藏 邀请

http://bbs.2ccc.com/topic.asp?topicid=381874
http://bbs.2ccc.com/topic.asp?topicid=561051
http://bbs.2ccc.com/topic.asp?topicid=382302
http://bbs.2ccc.com/topic.asp?topicid=564997
https://github.com/search?q=delphi-coll
https://my.oschina.net/mickelfeng/blog/1531377 Murmur2
https://cn.bing.com/search?q=SpookyHash+&qs=n&form=QBRE&sp=-1&pq=spookyhash+&sc=0-11&sk=&cvid=F35A6CBC319442E49DE1D2148FA8F065
http://burtleburtle.net/bob/hash/spooky.html
https://github.com/centaurean/spookyhash
http://burtleburtle.net/bob/c/lookup3.c
http://www.burtleburtle.net/bob/hash/doobs.html
http://burtleburtle.net/bob/index.html

数据库一般是b+树,基本上没有hash的。因为hash是无序的,group by 可能一般会有索引吧。
哈希跟排序没关系,哈希是快查用的。
c++里这些数据结构比较多,boost里扩充了不少这样的二叉树结构。

可以存放相同key的一般叫multimap,这个不知道下面的链接能不能满足你的需要了。
http://www.torry.net/tools/developers/compilers/deex091.zip

在10gR2中,sort group by 已经改为hash group by,它先读一条数据,然后求hash并+1,然后处理第二条,如果第二条的hash已经存在累计值,则+1,否则则产生一个新的结果条目并+1.所以hash group by是不需要排序的,毕竟分组后排序并不是需的,很多人在分组后并不要求排序,所以这样对整个系统的性能有好处...

数据库里 hash join 不要太多;特别是1大表和小表关联的时候;

sevencat (七猫)

是的 还是以b+为主,hash查询时间是个常量,但是是散列 应用有局限

另一个感受:
其实数据结构的哈希运算带来很大的效率提升;
通过今天的学习,让我更加感受到了一些辅助结构的效率提升,不是一点点;

这和数据库调优有点类似;

在oracle 数据库里, group by 的实现,在10g以前,是先排序,在分组;
所以得到的据结果总是排好序的;但是效率有时会低;
排序是很伤效率的;
就上面这个例子,20万条记录,用stringList.sorted:=true; 相当于做了快速排序;但是需要8秒的时间,太费时了;
所以oracle 10g之后,可以实现group by 的时候通过hash运算,不进行排序,所以我们看到的结果有时是不排序的,这个就大大实现了效率;至于怎么通过delphi实现不通过排序而group by的效果,我还不会呢;

可以使用jcl里的:jcl.sf.net
或者是dolx里的:http://sourceforge.net/projects/dclx/
新版本的java应该内置了。


鲜花

握手

雷人

路过

鸡蛋
该文章已有0人参与评论

请发表评论

全部评论

专题导读
上一篇:
怎样用delphi7中的SQLconnection组件远程连接Oracle数据库发布时间:2022-07-18
下一篇:
DelphiWriteFile函数发布时间:2022-07-18
热门推荐
阅读排行榜

扫描微信二维码

查看手机版网站

随时了解更新最新资讯

139-2527-9053

在线客服(服务时间 9:00~18:00)

在线QQ客服
地址:深圳市南山区西丽大学城创智工业园
电邮:jeky_zhao#qq.com
移动电话:139-2527-9053

Powered by 互联科技 X3.4© 2001-2213 极客世界.|Sitemap