有这样一个字段,里面有很多 URL 地址,这些 URL 地址很多都是一样的,我想知道这些 URL 不重复的 TOP 数据?
请问如何查询啊?
不重复的数据,进行叠加
得到的数据总数,进行 TOP 10 排序。
http://ruby-china.org/topics/3721
#1 楼 @fresh_fish 数据量非常大,大约 1000 万以上条数据。 楼上那个帖子没有数据叠加的问题!请求 DEMO
这么多数据,是不是要 map-reduce 了?
我会先用最简单的方法,遍历数组存到哈希。
如果 Ruby 实现的遍历和排序太慢,我就先插入 mongodb 再排序。
子查询吧
select * from (select count(*) as counter,url from table group by url) c order by c.counter desc limit 10
不过这种东西设计的时候不做成 counter_cache,效率高不了啊
如果你要问就目前你说的这样的场景如何排序我想不出不需要进行 Filesort 的方法。
如果重新设计一下可以这样: 1.添加一个 url_count 字段,加索引。 2.插入之前先查询,如果存在就 url_count + 1。 3.select * from urls order by url_count desc limit 10
select * from urls order by url_count desc limit 10
查询的时候: select id from urls where url="xx" and url_crc=CRC32("xx"); url_crc 列也要加索引。
select id from urls where url="xx" and url_crc=CRC32("xx");