【发布时间】:2017-09-01 10:39:08
【问题描述】:
我想知道获取所有非空行的最快方法是什么。我想到了这些:
SELECT * FROM table WHERE column IS NOT NULL
SELECT * FROM table WHERE column = column
SELECT * FROM table WHERE column LIKE '%'
(我不知道如何在 SQL 和/或 Hive 中测量执行时间,并且通过在 pgAdmin 中反复尝试 4M 行表,我没有得到明显的区别。)
【问题讨论】:
-
一旦你使用
LIKE,将不会使用任何索引....顺便说一句column = column对我来说没有任何意义 -
万一最直接的选项比其他选项慢,请提交错误报告。
-
@bub
column = column为真,除非column为NULL,因为NULL = NULL未知。 -
我希望前两个具有相同的执行时间,因为它们本质上是在做同样的事情并评估同一列。也许执行计划,看看?我可以告诉你,Oracle 在这两个之间的 sexec 计划上完全没有区别
-
据我所知,SQL 在解决它之前首先对每个查询应用启发式算法。因此 Query-1 和 Query-2 应该具有相同的执行时间,因为它们都在做同样的事情。可能第三个可能与其他人有一些不同。
标签: sql hive null query-optimization hiveql