3个MySQL数据库表:用户,文本,朋友
用户:用户名,密码,电子邮件等
文字:用户名,文字,日期等
朋友:用户名,friend_username等
编写一个算法(用Java)显示朋友的10条最新文本。
最终目标是在 O(n log n)中运行时间。
可以根据需要修改数据库表(添加新表)。
数据量: 200 000个用户,每个用户约50个文本。
我很感激任何想法,例子,要点等等。谢谢!
(不是作业。纯粹的问题,寻找性能改进)
答案 0 :(得分:3)
你确定必须用Java完成吗?这不是SQL查询吗?
SELECT text
FROM TEXT
WHERE username IN
(
SELECT friend_username FROM FRIEND WHERE username = 'YOUR_USERNAME'
)
ORDER BY date DESC
LIMIT 10
答案 1 :(得分:1)
你没有说什么数据库,所以我只是做一个假设(下面的Postgres语法):
select t.* from text t
inner join friend f ON f.friend_username = t.username
where f.username = 'myusername'
order by t.date desc
LIMIT 10