以随机顺序PHP检索MYSQL数据的最有效方法

时间:2010-04-02 02:48:15

标签: random

我有这样的查询:

SELECT * FROM table WHERE premium = 3

我只是想知道如何让它返回结果的随机顺序!

我被告知不要使用ORDER BY RAND();,因为它使用了大量的系统资源。

2 个答案:

答案 0 :(得分:1)

您期待多少结果?如果它很小,为什么不抓住所有结果,然后从它们中选择随机索引?

答案 1 :(得分:1)

在PHP中以随机顺序排序而不是MySQL

我从可伸缩性博客中读到Digg在PHP而不是Mysql中进行了4000%的排序改进。所以我的建议是用PHP而不是Mysql进行排序。我想你可以将结果放在一个shuffle的数组中。

  

实施评论功能时   增加4,000%   性能是通过排序创建的   PHP而不是MySQL

将结果存储在APC(内存)

每次尝试使用例如APC(在快速内存中)缓存它们时,不是从数据库中获取结果,而是最小化数据库负载。 SELECT * FROM table WHERE premium = 3更改后更新缓存。无论如何,对于任何大型站点来说APC都是必须的,因为编译PHP代码需要花费很多时间。

如果您无法编译APC,那么您的网站将永远不会尽可能快地运行。您可以将数据库提取存储在一个文件中,但是您必须执行可能会对您造成很大伤害的光盘IO。

App引擎

如果你无法编译APC(说实话我会一直看看谷歌的应用程序引擎)那么我建议你看看谷歌的app engine,因为他们有memcached这是一个内存数据库(闪电般快速)。您甚至可以在app引擎上通过quercus运行PHP代码。谷歌有一个慷慨的免费配额,一旦你使用免费配额便宜。