如果多个条件之一为真,如何执行JOIN?

克里斯·克

我的最终目标...匹配家用电话,手机或办公电话的行中的SELECT所有字段qry1tbl2

这是我当前的“失败” SQL语法。通过失败,我的意思是10到15分钟后执行还没有完成,而每个人(独立地)加入的时间都在一到两分钟之内。

SELECT qry1.* FROM qry1 INNER JOIN tbl2 ON ((qry1.CellPhone = tbl2.CellPhone) OR (qry1.HomePhone = tbl2.HomePhone) OR (qry1.WorkPhone = tbl2.WorkPhone));

问题:我的SQL语法是否有错误?有更好的方法来完成我的任务吗?对我来说,简单地独立运行3个(家庭,工作,单元格)JOIN查询,然后对它们进行UNION,然后在必要时进行重复数据删除是否更有意义?

乔纳森·莱夫勒

如果单个联接的工作速度很快,则复合OR条件可能会很慢,因为它不能使用单个索引,而单个条件可以为三个联接条件分别使用单个索引。因为它不能使用一个索引,所以它可能正在执行非索引的顺序表扫描。(您应该研究查询计划,以便了解优化器的实际作用。)

因此,鉴于单个查询的运行速度相当快,因此,使用UNION可以显着提高性能(除非DBMS中的优化器存在盲点):

SELECT qry1.* FROM qry1 INNER JOIN tbl2 ON qry1.CellPhone = tbl2.CellPhone
UNION
SELECT qry1.* FROM qry1 INNER JOIN tbl2 ON qry1.HomePhone = tbl2.HomePhone
UNION
SELECT qry1.* FROM qry1 INNER JOIN tbl2 ON qry1.WorkPhone = tbl2.WorkPhone

那应该给您大约3个独立查询一样快的结果。它不会那么快,因为UNION会执行重复消除(当然,单个查询不会消除)。您可以使用UNION ALL,但是如果两个表中有很多行,其中两对或三对字段匹配,则可能导致结果重复很多。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

如果多个条件为真,如何多次执行迭代?

来自分类Dev

当条件之一为FALSE时执行IF

来自分类Dev

如果两个条件之一为假,则执行php echo命令

来自分类Dev

MariaDB的执行UPDATE和DELETE然后如果条件为真

来自分类Dev

“如果”条件为真,但正在执行“其他”

来自分类Dev

如果条件始终为真,则执行Bash脚本

来自分类Dev

如果WordPress登录中的条件为真,则执行PHP脚本

来自分类Dev

如果我的条件为真,如何在bash脚本中运行多个命令

来自分类Dev

我如何将 3 个条件放入 if 语句中。on 必须为真,那么接下来的两个之一必须为真

来自分类Dev

如果条件为真,如何停止while循环以读取文件的每一行?

来自分类Dev

如何验证多个期望条件中是否有一个期望为真

来自分类Dev

如果条件为真,如何添加新组件?主动的

来自分类Dev

如果条件为真,如何隐藏标题的 div

来自分类Dev

如何循环遍历两个列表并添加条件语句以在一个条件为真时执行某些操作

来自分类Dev

如果条件被跳过,即使条件为真

来自分类Dev

如果语句为真,但未执行

来自分类Dev

Xpath 1.0:如果条件为真,则执行此操作 => 合并这 2 个 xpath

来自分类Dev

如果条件为真,则选择数据

来自分类Dev

如果条件为真,则排除文件

来自分类Dev

如果条件为真,则Cobol不进入

来自分类Dev

如果条件为真,则动态添加图标

来自分类Dev

如果条件为真,则停止功能

来自分类Dev

如果条件总是评估为真

来自分类Dev

如果条件为真,则隐藏元素

来自分类Dev

如果条件为真,则添加搜索参数

来自分类Dev

如果条件为真,则 SQL 过滤行

来自分类Dev

如何评估至少一个条件为真

来自分类Dev

仅评估多个布尔条件,只有一个条件为真(Delphi)

来自分类Dev

如果只有一个条件为真,是否有逻辑运算符返回真?

Related 相关文章

  1. 1

    如果多个条件为真,如何多次执行迭代?

  2. 2

    当条件之一为FALSE时执行IF

  3. 3

    如果两个条件之一为假,则执行php echo命令

  4. 4

    MariaDB的执行UPDATE和DELETE然后如果条件为真

  5. 5

    “如果”条件为真,但正在执行“其他”

  6. 6

    如果条件始终为真,则执行Bash脚本

  7. 7

    如果WordPress登录中的条件为真,则执行PHP脚本

  8. 8

    如果我的条件为真,如何在bash脚本中运行多个命令

  9. 9

    我如何将 3 个条件放入 if 语句中。on 必须为真,那么接下来的两个之一必须为真

  10. 10

    如果条件为真,如何停止while循环以读取文件的每一行?

  11. 11

    如何验证多个期望条件中是否有一个期望为真

  12. 12

    如果条件为真,如何添加新组件?主动的

  13. 13

    如果条件为真,如何隐藏标题的 div

  14. 14

    如何循环遍历两个列表并添加条件语句以在一个条件为真时执行某些操作

  15. 15

    如果条件被跳过,即使条件为真

  16. 16

    如果语句为真,但未执行

  17. 17

    Xpath 1.0:如果条件为真,则执行此操作 => 合并这 2 个 xpath

  18. 18

    如果条件为真,则选择数据

  19. 19

    如果条件为真,则排除文件

  20. 20

    如果条件为真,则Cobol不进入

  21. 21

    如果条件为真,则动态添加图标

  22. 22

    如果条件为真,则停止功能

  23. 23

    如果条件总是评估为真

  24. 24

    如果条件为真,则隐藏元素

  25. 25

    如果条件为真,则添加搜索参数

  26. 26

    如果条件为真,则 SQL 过滤行

  27. 27

    如何评估至少一个条件为真

  28. 28

    仅评估多个布尔条件,只有一个条件为真(Delphi)

  29. 29

    如果只有一个条件为真,是否有逻辑运算符返回真?

热门标签

归档