› MySQL 5.5 Community Server
› MySQL 5.6 Community Server
› Percona Configuration Wizard
› XtraBackup 搭建主从复制
Great Sites on MySQL
› Percona
› MySQL Performance Blog
› Severalnines
推荐管理工具
› Sequel Pro
› phpMyAdmin
推荐书目
› MySQL Cookbook
MySQL 相关项目
› MariaDB
› Drizzle
参考文档
› http://mysql-python.sourceforge.net/MySQLdb.html
thetydead
V2EX  ›  MySQL

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

  •  
  •   thetydead ·
    thetydead · Aug 22, 2018 · 4926 views
    This topic created in 2968 days ago, the information mentioned may be changed or developed.

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

    5 replies  •  2018-08-22 13:23:10 +08:00
    ppyybb
        1
    ppyybb  
       Aug 22, 2018 via iPhone
    你实践一下就知道了,用 explain 把查询过程弄出来就明白了。往往猜测和实际差异都很大
    fatcheung
        2
    fatcheung  
       Aug 22, 2018
    函数也不走索引啊。不过我猜是 NVL 效率高。
    bpllzbh
        3
    bpllzbh  
       Aug 22, 2018
    试试 where a > '';
    or 和 null 判断都会丢失索引
    xuanbg
        4
    xuanbg  
       Aug 22, 2018   ❤️ 1
    又是一个被以讹传讹的博客文章毒害的。。。谁说 is null 不走索引的,null 怎么就不能索引?这个不科学。最好还是自己试试看弄清楚比较好。
    weizhen199
        5
    weizhen199  
       Aug 22, 2018
    oracle 还真不会给 null 索引,一般都是建一个联合索引,第二个索引字段设为常量,或者加个 nvl 做函数 index
    About   ·   Help   ·   Advertise   ·   Blog   ·   API   ·   FAQ   ·   Privacy   ·   Solana   ·   937 Online   Highest 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 31ms · UTC 23:23 · PVG 07:23 · LAX 16:23 · JFK 19:23
    ♥ Do have faith in what you're doing.