
一次请求需要从提交的数据中获取一个数组 A,然后,从数据库中遍历某张表的字段 B。最后通过一系列的计算(计算过程包含数组 A 和 B ),每条数据算出一个值,取最高的几个值返回给请求方?请问这样需求有什么好的实现方案,响应时间越短越好。 谢谢!
1 Immortal Jul 6, 2017 能看懂有鬼了- - |
2 Hieast Jul 6, 2017 楼主名字很好玩,itertools,再加个 nlargest、map, 应该可以解决楼主的问题了。 |
4 uxstone Jul 6, 2017 找个合适的数据结构,先把表中的数据取出来,在代码中写具体的运算逻辑 ? |
6 Hieast Jul 6, 2017 via Android |
7 cszeus Jul 7, 2017 在 B 上面建索引,然后用多线程或者多进程,把 B 里面的东西分成多个部分取出来,分别算,再一起取最大? 本来上千万条的数据,不需要分表么? |
8 lxml Jul 7, 2017 via Android 虽然不太清楚具体 B 是什么数据,但一个思路吃把 B 按照跳表的方式弄个多层索引,尽快的优化找 B 的速度。 |
9 Miy4mori Jul 7, 2017 via iPhone 我觉得直接用存储过程快吧,要是读到代码里再算估计 io 开销就够喝一壶了。 |
10 caniuse Jul 7, 2017 感觉适合用 mapreduce 思想,把任务分割成小任务分配到其他机器上并行 |