小编ojr*_*rac的帖子

来自Sql数据库的简单随机样本

如何在SQL中使用高效的简单随机样本?有问题的数据库正在运行MySQL; 我的表至少有200,000行,我想要一个大约10,000的简单随机样本.

"明显"的答案是:

SELECT * FROM table ORDER BY RAND() LIMIT 10000
Run Code Online (Sandbox Code Playgroud)

对于大型表来说,这太慢了:它为每一行调用RAND()(已经将它放在O(n)处)并对它们进行排序,最多使它成为O(n lg n).有没有办法比O(n)更快地做到这一点?

注意:正如Andrew Mao在评论中指出的那样,如果您在SQL Server上使用此方法,则应使用T-SQL函数NEWID(),因为RAND()可能会为所有行返回相同的值.

编辑:5年后

我用更大的表再次遇到了这个问题,并最终使用了@ ignorant的解决方案,并进行了两次调整:

  • 将行采样到2-5倍我想要的样本大小,以便宜的ORDER BY RAND()
  • 在每次插入/更新时将RAND()的结果保存到索引列.(如果您的数据集不是非常大,那么您可能需要找到另一种方法来保持此列的新鲜度.)

要获取表的1000项样本,我计算行并使用frozen_rand列将结果平均下降到10,000行:

SELECT COUNT(*) FROM table; -- Use this to determine rand_low and rand_high

  SELECT *
    FROM table
   WHERE frozen_rand BETWEEN %(rand_low)s AND %(rand_high)s
ORDER BY RAND() LIMIT 1000
Run Code Online (Sandbox Code Playgroud)

(我的实际实现涉及更多的工作,以确保我没有欠采样,并手动包裹rand_high,但基本的想法是"随机削减你的N到几千.")

虽然这会做出一些牺牲,但它允许我使用索引扫描对数据库进行采样,直到它再次小到ORDER BY RAND()为止.

mysql sql random postgresql random-sample

77
推荐指数
5
解决办法
10万
查看次数

sys和os.sys有什么区别

sysos.syspython有什么区别?我看到许多项目sys在导入时使用os.当我尝试dir(sys)并且dir(os.sys)它们具有相同的功能并且它们的输出相同时.

我经常看到代码使用sys.exit这样,而不是使用os.sys.exit,但两者都做同样的事情.

import os   
import sys    
sys.exit()
Run Code Online (Sandbox Code Playgroud)

python

19
推荐指数
1
解决办法
8861
查看次数

分发Python程序

我如何让我的朋友使用我的Python程序?他们没有安装python,但他们可以使用命令行程序.我没有写GUI的技巧.

让我说,我正在编写一些微积分计算器,有很多自定义模块和文件.我该如何分享?

python

9
推荐指数
2
解决办法
6191
查看次数

innerHTML和<embed>有什么用?

我正在尝试修复我正在使用的富文本编辑器中的错误,这会导致<embed>插入标签而没有它们的结束标记(这会完全拧紧输出).我已将问题隔离到此操作:

// body is a <body> tag
body.innerHTML = '<embed src="http://example.com/whatever"></embed>';
Run Code Online (Sandbox Code Playgroud)

没有花哨的代码,只有Firefox的innerHTML任务.您应该能够在Firebug中复制错误,如下所示:

>>> document.body.innerHTML = "<embed></embed>"
"<embed></embed>"
>>> document.body.innerHTML
"<embed>"
Run Code Online (Sandbox Code Playgroud)

这有解决方法吗?我需要标签,但由于一个糟糕的边缘情况,我不能证明重建/替换整个富文本编辑器是正确的.

我无法将其转换为类似的东西document.createElement('embed'),因为这个编辑器的真实世界输入可以很容易地包含几段文字包裹着<embed>; 在纸面上,innerHTML非常适合这个用例,我只是无法使用它<embed>.

html javascript embed innerhtml

1
推荐指数
1
解决办法
3326
查看次数

标签 统计

python ×2

embed ×1

html ×1

innerhtml ×1

javascript ×1

mysql ×1

postgresql ×1

random ×1

random-sample ×1

sql ×1