我where NULL IS NULL
在代码中看到了很多类型条件,我很好奇其中可能涉及的开销。
所以SELECT * FROM table WHERE field = 'TERM' AND (NULL IS NULL OR anotherField = NULL)
在一张桌子上给出 > 10+ 百万条记录。是否有足够的关注强制取消NULL IS NULL
条件或差异可以忽略不计?
开发人员正在使用此语法编写处理可选查询参数的通用 SQL。我个人认为,如果未提供参数,则应该将其排除在查询之外,因为它看起来是多余的。
我对此进行了一些谷歌搜索,但似乎找不到答案,也许我的搜索词似乎很常见,但已关闭。
我以前见过这个,我做了一个快速搜索来验证它。我会告诉你我认为你在看什么只是一个猜测,来自use-the-index-luke
所以我认为您正在查看的是动态生成的 SQL。你有
我不认为这是正确的,我认为这是一个占位符或准备好的声明,看起来像这样,
最终,整个声明都留空了,所以它看起来像,
这使得条件失去所有选择性并在查询编译中被修剪。这就是所有的背景,
是的,the
null IS NULL
得到常量折叠(true
在我所知道的每个数据库中),并且两者都false OR true
被true OR false
简化为true
.