where a is null or a = '' 和 where nvl(a,'')=''在查询效率上面有没有区别

2018-08-22 09:55:40 +08:00
 thetydead

搜索了一下,网上说说 is null 操作不会走索引,所以查询速度会比 nvl 要来的慢?但是如果没有索引的话,是不是就是 2 中方式的查询速度就一样了呢?

3783 次点击
所在节点    MySQL
5 条回复
ppyybb
2018-08-22 10:08:32 +08:00
你实践一下就知道了,用 explain 把查询过程弄出来就明白了。往往猜测和实际差异都很大
fatcheung
2018-08-22 10:23:33 +08:00
函数也不走索引啊。不过我猜是 NVL 效率高。
bpllzbh
2018-08-22 10:34:36 +08:00
试试 where a > '';
or 和 null 判断都会丢失索引
xuanbg
2018-08-22 11:19:53 +08:00
又是一个被以讹传讹的博客文章毒害的。。。谁说 is null 不走索引的,null 怎么就不能索引?这个不科学。最好还是自己试试看弄清楚比较好。
weizhen199
2018-08-22 13:23:10 +08:00
oracle 还真不会给 null 索引,一般都是建一个联合索引,第二个索引字段设为常量,或者加个 nvl 做函数 index

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/482066

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX