sql – HIVE中的LIMIT条款是否真的是随机的?

前端之家收集整理的这篇文章主要介绍了sql – HIVE中的LIMIT条款是否真的是随机的?前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
HIV的 documentation注意到LIMIT子句返回随机选择的行.我一直在一个表上运行SELECT表,其中包含超过800,000条LIMIT 1的记录,但它总是返回相同的记录.

我正在使用Shark发行版,我想知道这是否与这种不期望的行为有关?任何想法将不胜感激.

谢谢,
Visakh

解决方法

即使文档声明它随机返回行,但事实并非如此.

它返回“随机选择的行”,因为它出现在数据库中而没有任何where / order by子句.这意味着它并不像您想象的那样随机(或随机选择),只是无法确定返回行的顺序.

一旦你通过x DESC限制5拍打订单,它就会返回你选择的最后5行.

要获得随机返回的行,您需要使用以下内容:order by rand()LIMIT 1

但是,如果索引设置不正确,则会对速度产生影响.通常我做一个min / max来获取表中的ID,然后在它们之间做一个随机数,然后选择那些记录(在你的情况下,只是1条记录),这往往比数据库更快这项工作,特别是在大型数据集上

猜你在找的MsSQL相关文章