sql - 选择所有列然后抽样,还是只选择 ID 然后加入并抽样?
问题描述
问题:假设我们正在查看 100 亿行数值数据,其中 FROM 子句排除了 99% 的条目,您希望哪种方法执行得更好,为什么?
无论哪种方式,我都可以争论,但话又说回来,我可能有 6 个月的 SQL 经验并且没有正式的 compsci 教育。问题是在 ANSI Snowflake SQL 中格式化的。
方法 1:对所有列进行采样(有条件)。
SELECT col1, col2, col3.... coln
FROM table1
WHERE cond1 and cond2 and cond3... condn
SAMPLE (1000000 rows)
方法 2:仅样本 ID(有条件)然后加入。
SELECT *
FROM
(SELECT IDcol
FROM table1
WHERE cond1 and cond2 and cond3... condn
SAMPLE (1000000 rows)
) as t1sampled
INNER JOIN
(SELECT col1, col2, col3.... coln
FROM table1
) as t1
ON t1sampled.IDcol = t1.IDcol
解决方案
推荐阅读
- c# - 您可以将 Entity Framework 6 数据库优先生成的实体设为私有吗?
- sparql - 使用 SparQL 中的关系在实体之间进行选择
- reactjs - 如何使用 docker + react-create-app 进行生产构建?
- javascript - 我应该使用reduce进行映射吗?
- python - 'Roster_Name = Roster_List[1] IndexError: list index out of range", list "Roster_List" 有 3 个元素? - Python
- c++ - 将代码从非模板转换为模板时,类不是模板错误
- c# - FakeItEasy 不返回预期值
- regex - 从现有正则表达式中选择特定匹配
- javascript - 如何正确等待使用 fetch 成功上传?
- javascript - 扁平树与嵌套树