my sql 两个 索引 时的 union 与 or 的比较

Posted 赵坤坤

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了my sql 两个 索引 时的 union 与 or 的比较相关的知识,希望对你有一定的参考价值。

背景:用一个表中的父子级关系进行查询 优化的过程中 发现可以使用 or 来代替 union all
union all 需要查询两次 表 而 使用 or只需要 查询 一次 并且 两个字段都建立了索引
 
SELECT OrganizationCode FROM organization WHERE OrganizationCode IN (\'44010000\')
UNION ALL SELECT OrganizationCode FROM organization WHERE UpperComCode IN (\'44010000\');
 
SELECT OrganizationCode FROM organization WHERE OrganizationCode IN (\'44010000\') OR uppercomcode IN (\'44010000\')
 
第一个过程用时:0.00012s

 

第二个过程用时:0.00067s

 

 

 
第一个过程索引

 


 

第二个过程索引类型

 


 

 
 
数据表数据

 

 

 

 
 
结论
索引类型不同
union all 在此时 比or 更快

 

以上是关于my sql 两个 索引 时的 union 与 or 的比较的主要内容,如果未能解决你的问题,请参考以下文章

sql 优化union union allor使用

oracle union 和 union all

SQL 中的 UNION 和UNION ALL 有啥区别?

delphi程序中使用union all 查询sql数据中的两个表报"不能比较或排序 text、ntext和image类型"的错误。

mysql 使用UNION ALL问题

SQL Server:如何将 UNION 与两个都有 WHERE 子句的查询一起使用?