当前位置: 首页 > 面试题库 >

MYSQL查询WHERE IN vs OR

於德馨
2023-03-14
问题内容

我已经开发了使用OR查询的系统:

SELECT * FROM tableA 
JOIN tableB ON (idA = idB)
WHERE idA = 1 OR 
      idA = 2 OR 
      idA = 3 OR 
      idA = 4 OR 
      idA = 5 ...... OR 
      idA=100

与查询IN进行比较:

SELECT * 
FROM tableA JOIN tableB ON (idA = idB)
WHERE idA IN (1,2,3,4,5,......,100)

MYSQL数据库中最好的查询是什么?


问题答案:

用于。

IN将使用索引。

否则(afaik)将不使用索引。

另外,这一点不容忽视,IN版本:

  • 使用更少的代码
  • 更容易维护
  • 更容易理解

仅出于这些原因,我准备为获得代码质量而遭受一点性能损失,但实际上您也获得了性能。



 类似资料:
  • 前面我们介绍了如何使用 SELECT、INSERT、UPDATE 和 DELETE 语句对 MySQL 进行简单访问和操作。下面在此基础上开始学习子查询。 子查询是 MySQL 中比较常用的查询方法,通过子查询可以实现多表查询。 子查询指将一个查询语句嵌套在另一个查询语句中。子查询可以在 SELECT、UPDATE 和 DELETE 语句中使用,而且可以进行多层嵌套。在实际开发时,子查询经常出现在

  • 问题内容: 我将使用Sencha Touch将Android-Travellog应用程序移植到其他Plattforms。问题是,Sencha仅具有一个存储系统来存储数据,而似乎没有可能正确地进行MySql查询。而且,由于我以前的应用程序中的大多数Mysql代码已经存在,因此使用Senchas new System重做所有内容时,id会很痛苦。是否可以在Sencha中使用mysql(或任何其他sql

  • 问题内容: 我在MySQL的ExtractValue函数方面有点问题。 这是我的示例XML: 这是我当前的查询: 结果如下: 这是我想要的: 有人可以帮我实现这一点..谢谢。 问题答案: 在这里回答了这个问题: 在MySQL中解析XML字符串 如果将子级更改为“ B”,则该文章中的解决方案应该起作用:

  • 我如何写问题。*在jooq中而不是指定所有实体vaiables

  • 我尝试做一个mysql查询,从wp_posts中选择所有的帖子,从中选择post_title和post_content,然后选择表wp_postmeta并显示meta_value,其中meta_key等于“_wp_attached_file”。 我试过这样做: 查询应该显示所有的post以及它是否有一个等于'_wp_attached_file'的meta_key。然后show meta_value

  • 问题内容: 谁能看到以下查询出了什么问题? 当我运行它时,我得到: #1064-您的SQL语法有误;检查与您的MySQL服务器版本相对应的手册以获取正确的语法,以在第8行的’a where a.CompetitionID = Competition.CompetitionID’附近使用 问题答案: 主要问题是内部查询不能与外部语句上的子句相关,因为在内部子查询执行之前,where过滤器首先应用于要

  • 问题内容: 这就是整个查询… 如果… 和… 有明显的理由吗? 正在服用? 扩展说明 问题答案: 您可以始终使用EXPLAIN或EXPLAIN EXTENDED 来查看MySql对查询所做的操作 您也可以用稍微不同的方式编写查询,是否尝试过以下方法? 看看效果如何会很有趣。我希望它会更快,因为目前,我认为MySql将为您拥有的每个节目运行内部查询1(这样一个查询将运行多次。联接应该更有效。) 如果希

  • 问题内容: 我有一组按层次结构组织的数据,应该可以增长到任意大小。我需要检索整个树,但是我无法弄清楚如何仅使用SQL来完成。我当前的解决方案是创建一个临时表,并使用递归函数依次查询树的分支,然后将结果存储在临时表中,随后我再次对其进行查询以产生所需的结果。 我的问题是,从本质上讲,我正在执行的联接正确吗?构造一个中间表,然后查询结果。似乎应该有一种使用联接的方法,但是MySQL文档仅涵盖检索有限深