欢迎来到Doc100.Net免费学习资源知识分享平台!
您的位置:首页 > 程序异常 >

关于大数据表的count(distinct)操作优化,该怎么解决

更新时间: 2014-01-05 02:32:26 责任编辑: Author_N1

 

关于大数据表的count(distinct)操作优化
有一个表
res_url
id time url 次数 流量 资源类型

每天产生一个URL一条记录 值分别是:时间\URL\访问次数\流量和\资源类型
一天的记录数大概是 50万条的数量级


不同天产生的URL有重复。


目的:查询范围为多天时要求出URL的记录数(如果能求出流量和及次数和更好)

简单说是select count(distinct url) from res_url
但这样查存在严重的性能瓶劲,主要是记录数过多了。distinct操作较慢,看看有没优化的方法。
------最佳解决方案--------------------
假设ID唯一,URL、ID上建立索引
select * from tt a where not exists(select 1 from tt where a.url=url and a.id>id)
------其他解决方案--------------------
我的表已经存在了,里面目前有100万条数了,再创建索引再测试好像没有效果,
如果URL索引和表一起创建再插入数据效率会提升很多,是不是这样,对已经存在表但未建URL索引的情况该如何解决才好?
------其他解决方案--------------------
你可以直接为已存在的表创建索引。

create index xxx on 有一个表(res_url)
------其他解决方案--------------------
学习了,感谢楼上两位分享
------其他解决方案--------------------
引用:
假设ID唯一,URL、ID上建立索引
select * from tt a where not exists(select 1 from tt where a.url=url and a.id>id)


用你的方法弄了,依然很慢呀,还有没其它特殊一点能较好改善这个问题的。
已知数据库表数据有9000多万条这样的数量级。

------其他解决方案--------------------
继续顶上去,上面说错了数据量在5000千万左右才对。
上一篇:上一篇
下一篇:下一篇

 

随机推荐程序问答结果

 

 

如对文章有任何疑问请提交到问题反馈,或者您对内容不满意,请您反馈给我们DOC100.NET论坛发贴求解。
DOC100.NET资源网,机器学习分类整理更新日期::2014-01-05 02:32:26
如需转载,请注明文章出处和来源网址:http://www.doc100.net/bugs/t/11148/
本文WWW.DOC100.NET DOC100.NET版权所有。