该文件中HIVE指出,LIMIT条款returnsrows chosen at random。我一直在一个SELECT表上运行一个表,该表中的800,000记录多于LIMIT 1,但是它总是返回相同的记录。
HIVE
LIMIT
returnsrows chosen at random
SELECT
800,000
LIMIT 1
我正在使用Shark发行版,我想知道这是否与这种意外行为有关?任何想法将不胜感激。
Shark
谢谢,Visakh
即使文档指出它随机返回行,但实际上并非如此。
它返回“随机选择的行”,因为它出现在数据库中而没有任何where / order by子句。这意味着它并不是真正的随机(或随机选择),只是无法确定返回行的顺序。
一旦在上面拍了order by x DESC limit 5一下,它就会返回您从中选择的内容的最后5行。
order by x DESC limit 5
要使行随机返回,您需要使用类似以下内容的代码: order by rand() LIMIT 1
order by rand() LIMIT 1
但是,如果索引设置不正确,可能会对速度产生影响。通常,我做一个最小/最大来获取表上的ID,然后在它们之间做一个随机数,然后选择那些记录(在您的情况下,将是1条记录),这往往比数据库要快。工作,尤其是在大型数据集上