首页 > 解决方案 > 我应该使用子查询还是组合 WHERE?

问题描述

这种具体情况可能看起来有点傻,但我只想知道我应该如何解决它:有一张表(学校),在这张表中你可以找到所有学生的学校 ID。顺序是完全随机的,但您可以使用 SELECT 语句对其进行排序。

CREATE TABLE schools (school_id int, name varchar(32), age ...);

现在我想按他的名字搜索一个学生(使用 LIKE '%name%'),但前提是他在某所学校。我已经尝试过了:

SELECT * FROM `schools` WHERE `school_id` = 33 and `name` LIKE '%max%';

但后来我意识到,我也可以使用子查询,如:

SELECT * FROM (SELECT * FROM `schools` WHERE `school_id` = 33) AS a
      WHERE a.name LIKE '%max%';

哪种方式更高效/性能更高?

标签: mysqlsqlselectsubquery

解决方案


您可以使用EXPLAIN关键字来准确查看每个查询是如何执行的。

我会说几乎可以肯定这两者将执行相同的操作。


推荐阅读