我在互联网上找到的一些文章比较了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.
这个版本稍微更具攻击性,允许(可能)使用索引
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)
我说"轻微"和"可能"的原因是非等同谓词可能意味着你最终会得到一个完整的扫描.