应用场景:
最近做了一个医院的客服系统,需要和医院his系统对接,从his系统中读取患者数据,医院his系统提供了一个患者视图给客服系统使用(有id,name,age。。以及其他的一些患者字段),his系统使用的是oracle数据库。客服系统需要实现功能:客服系统根据his系统的患者视图做了一个患者列表展示,每天会有人员对患者进行回访记录,回访过后会在客服系统数据库中记录患者id,name以及回访时间,回访内容。。等字段,现在客服系统需要在患者列表将所有“未回访“的患者搜索出来,(未回访的指的是在客服系统中没有添加过回访记录的患者),如果用where not in (已回访的患者id) 效率太低了 求一个比较好的sql优化或者其他方式的解决方案。备注①:医院his系统不会做任何的接口或者数据库修改。
备注②:医院his系统的患者数据是过百万的,并且是在不断变更的,暂不考虑写程序一直更新同步数据到客服系统,客服系统中现在记录的已经回访过的患者大概有3万条数据。

解决方案 »

  1.   

    谢谢回答,增加字段指的是 在his系统中加字段吗,his系统的开发方已经明确表示过了不会对他们数据做任何 修改。。
      

  2.   

    如果不能加字段很难提高效率,用not exists也不会起什么作用,建议还是如同一楼说的加字段,只加这个字段不需要系统修改什么,只在数据库端加字段,给个默认值就可以了,不会增加his系统什么开发量的。
      

  3.   

    好纠结啊,拖着都不能验收,客服这边非要这个功能,第三方his系统又不愿意配合,都要和他们吵起来了,第三方his系统程序员说这个查询sql自己想办法优化下就行了,很简单的。。我能力有限 实在不知道咋解决,求大神给方案啊!!