当前位置: 首页 > 面试题库 >

ORDER BY RAND()替代品

衡玄裳
2023-03-14
问题内容

这个问题已经在这里有了答案

7年前关闭。

可能重复:
MySQL:ORDER BY
RAND()的替代方法

我目前有一个查询,最终ORDER BY RAND(HOUR(NOW())) LIMIT 40得到40个随机结果。结果列表每小时更改一次。

这会杀死查询缓存,这会损害性能。

您是否可以建议一种获取随 时间变化 的随机(ish)结果集的替代方法 ?它不必是 每个 小时,也不必是完全随机的。

我宁愿选择一个随机结果,也不愿对表中的任意字段进行排序,但我会作为最后的选择…

(这是我不时地需要洗牌的新产品清单)。


问题答案:

我认为更好的方法是将产品标识符下载到中间层,在需要时(每小时一次或每个请求一次)随机选择40个值,然后在查询中使用它们:product_id in (@id_1, @id_2, ..., @id_40)



 类似资料:
  • 问题内容: 问题 在解决这个问题之后,似乎基于文件或磁盘的实现可能是解决我在此处提到的问题的正确解决方案。精简版: 目前,我已将实施为。 条目以相当固定的速率连续添加到其中。稍后对此进行详细说明。 最终,无论如何,这意味着JVM耗尽了堆空间。 在工作中,(强烈)建议我使用SQLite解决此问题,但是在问了上一个问题之后,我认为数据库不是适合此工作的合适工具。所以- 让我知道这听起来是否疯狂 -我认

  • 问题内容: 这是一个从来没有一个正确答案的问题,我已经在网上搜索了很多次,却找不到解决方案。 它适用于Firefox,Chrome。我的responseText将像Réunion这样返回char,它将显示为奇怪的符号。 我尝试了许多方法,例如编码和解码,在响应文件中设置标头都无效。我没主意了。请帮助某人。 在主文件中,确保设置了内容类型和字符集。 在您的AJAX加载页面中,确保您位于顶部。 问题解

  • 问题内容: 首先-我的描述;) 我从服务器收到XmlHttpRequests JSON响应。MySQL驱动程序将所有数据输出为字符串,PHP将其按原样返回,因此任何整数都将作为字符串返回,因此: JS中的parseInt()函数是否有任何快速替代方法(hack),可以解析纯数字字符串,例如 问题答案: 要转换为整数,只需使用一元+运算符,它应该是最快的方法: 可以通过类似的方式转换为其他类型: 更

  • 问题内容: 我有以下内容: 和 终于我有了 如果我做 和P元帅,我只是把田野当作事物的一部分,而不是高度。 我知道我可以在A中添加@XmlSeeAlso(B.class),这一切都可以。 但是问题是我不知道B以外的所有扩展类,因为A可能在运行时扩展。 如何在运行时动态定义@XmlSeeAlso? 问题答案: 这取决于您如何创建JAXBContext。该newInstance方法可以与所有的类的显式

  • 问题内容: 一个(很久以前),我写了一个网络蜘蛛,我对该线程进行了多线程处理,以使并发请求能够同时发生。那是我的Python青年时代,在我了解GIL及其为多线程代码造成的相关麻烦之前(IE,大多数时候,这些东西最终都被序列化了!)… 我想对这段代码进行重做,以使其更健壮并性能更好。基本上有两种方法可以执行此操作:我可以使用2.6+中的新多处理模块,也可以使用某种基于反应堆/事件的模型。我宁愿以后再

  • 问题内容: 这只是理论问题。 我将JDBC与Java应用程序一起使用,以使用数据库(选择,插入,更新,删除等)。我制作了“手动” Java类,它将包含来自数据库表的数据(属性= db列)。然后,我进行查询(ResultSet),并用数据填充这些类。我不确定这是否正确。 但是我已经阅读了很多有关JDO和其他持久性解决方案的信息。 有人可以根据他们的经验推荐最佳使用的JDBC替代品吗? 我还想知道JD

  • 问题内容: 在一个Web项目中,用户上传了他们的文件,但是当我在服务器上收到它们时,它们将被存储为.tmp文件而不是原始文件扩展名(这也是我的首选行为)。 但是,这引起了问题。虽然对我来说本地的,但是在我的Linux开发机器上,它可以正常工作并且可以确定正确的mime类型,但是当我将项目上传到生产服务器(amazon beantalk)时,似乎无法正确确定mime类型。 从阅读javadocs来看

  • 问题内容: 我正在尝试使用CSS和没有jquery动态地更改div的宽度。 以下代码将 我还希望支持IE 5.5及更高版本 ,我发现了以下内容:表达式。这是正确的用法吗? 我还可以支持Opera和Android浏览器吗? 问题答案: 几乎总是可以替换计算规则,例如用于布局。 例如: 如果我有以下标记: 而不是这样做:(假设边栏为300px宽) 做这个: PS: 我不会在IE 5.5(hahahah