加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 站长学院 > MsSql教程 > 正文

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

发布时间:2020-12-12 07:30:28 所属栏目:MsSql教程 来源:网络整理
导读:HIV的 documentation注意到LIMIT子句返回随机选择的行.我一直在一个表上运行SELECT表,其中包含超过800,000条LIMIT 1的记录,但它总是返回相同的记录. 我正在使用Shark发行版,我想知道这是否与这种不期望的行为有关?任何想法将不胜感激. 谢谢, Visakh 解决方法
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条记录),这往往比数据库更快这项工作,特别是在大型数据集上

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读