日期:2014-05-16  浏览次数:20708 次

频繁随机读取数据库性能优化问题
我用的是postgres.   客户端一刷新,就要从服务器随机取5条数据。

如果用
select   field1,   field2,field3   from   table1   order   by   random()   limit   5
这样就会频繁的随机读取数据库,生成的field1,field2,field3将会用文件流发送到客户端。

如果table1数据量很大,每次随机取会造成性能下降。


有什么办法可以优化?

比如把所有数据先取出来放到内存或者硬盘,然后每次客户端需求随机5条数据时候,从内存或者硬盘随机取5个文件。这样效率会好些吗?

------解决方案--------------------
如果表很大,放在内存或磁盘上都不合适,还是不能解决问题。可以先随机在表中抽取一定数量的记录,比如10万条,放入内存,然后在这10万条中随机抽取
------解决方案--------------------
把你的结果放在内存,然后在内存里在查找,这样快多了