首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 数据库 > 其他数据库 >

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

2012-12-15 
关于大数据表的count(distinct)操作优化有一个表res_urlid time url 次数 流量 资源类型每天产生一个URL一

关于大数据表的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千万左右才对。

热点排行