检查空字符串时COALESCE vs IS NOT NULL性能

Rus*_*ell 6 sql teradata

我在互联网上找到的一些文章比较了ISNULL和COALESCE,所以我认为我的问题有点不同.

我想知道哪个性能更好?

SELECT * FROM mytable WHERE mycolumn IS NOT NULL AND mycolumn <> '';
Run Code Online (Sandbox Code Playgroud)

要么

SELECT * FROM mytable WHERE COALESCE(mycolumn,'') <> '';
Run Code Online (Sandbox Code Playgroud)

除了表现,在决定时我还应该考虑其他问题吗?

编辑:

我正在使用Teradata.

Mar*_*ith 7

这个版本稍微更具攻击性,允许(可能)使用索引

SELECT * FROM mytable WHERE mycolumn IS NOT NULL AND mycolumn <> '';
Run Code Online (Sandbox Code Playgroud)

它可以简化为

SELECT * FROM mytable WHERE mycolumn <> '';
Run Code Online (Sandbox Code Playgroud)

我说"轻微"和"可能"的原因是非等同谓词可能意味着你最终会得到一个完整的扫描.