mysql - 我应该使用子查询还是组合 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%';
哪种方式更高效/性能更高?
解决方案
您可以使用EXPLAIN
关键字来准确查看每个查询是如何执行的。
我会说几乎可以肯定这两者将执行相同的操作。
推荐阅读
- javascript - 使用ajax调用循环表中的列值
- java - 绑定结果给出 Whitelabel 错误页面
- mysql - 外键错误 MySQL(XAMPP) - (errno: 150 "外键约束格式不正确")
- php - Laravel livewire 复选框选项未被选中
- r - 使用数据中移动窗口的相关矩阵
- r - 在 ggplot2 中绘制出处包的输出
- c++ - Why my UniqPtr objects are double in size compared to std::unique_ptr?
- c# - Json deserialization problem in c # form & json.net application
- firebase - Horizontal ListView inside SliverAppBar
- ajax - Click don't work well when i scroll, jScrollPane and ajax