有两个表:订单表 现有 单据5万行,有2个唯一索引和3个一般索引 ,EXCEL导入临时表根据导入的EXCEL文件行数确定
现导入50行记录的EXCEL文件,用UPDATE进行数据更新订单表中的数据,
exist语法导入时间13分钟,IN语句 6秒。
问题关键:
exist语句会通过对订单表进行轮询,将5万条记录进行轮询完毕花费大量时间;in通过对excel文件进行轮询后进行更新效率较高
结论:并不是EXIST一定效率较高的。
引用网上的一句话:
in和exist的主要区别体现在对sql执行计划的影响上。 传统上认为,如果子查询的条件更具选择性(selective),就用in;而如果父查询(外层查询)的条件更具选择性(selective),就用exist。