mysql - 这三个查询之间是否有任何性能差异
问题描述
我有两张桌子t1
,t2
如下所示:
create table t1(
id int primary key,
name varchar(10),
desc varchar(500)
);
create table t2(
id int primary key,
tid int foreign key references t1(id),
code varchar(10)
);
现在我想从t1
其中有相关记录的地方查询一些数据t2
,所以我写了以下三个查询:
-- query1,using in with hard code inside it,n might be more than 100
SELECT * FROM t1 WHERE id IN(tid1,tid2,....tidn);
-- query2,using in with subquery
SELECT * FROM t1 WHERE id IN(SELECT tid FROM t2);
-- query3,using join
SELECT t1.* FROM t1 JOIN t2 ON t1.id=t2.tid;
现在我想知道哪个查询性能最好,假设版本MySQL
是5.1(也是与版本有关吗?),提前谢谢!
我自己测试过,我发现它与数据大小有关,不同的大小会给出不同的结果,所以我在这里问
解决方案
我不确定性能,但最后一个更好,因为大多数数据库在 IN CLAUSE 中有 x 元素的限制。我认为它也是最快的,但最好通过测试来确认。
推荐阅读
- android-studio - 复选框文本未垂直对齐复选框的中心
- jquery - 使用 Ajax Jquery 在 Div 中附加一个 href
- php - 有时不包含 PHPmailer 附件
- python - 使用 Paramiko 单独执行多个依赖命令,并找出每个命令何时完成
- xamarin - Xamarin:绑定 ContentView 内容不起作用,错误的实现
- java - 接口中的 Pojos
- input - 边界元法。如何处理标签 for/id?
- javascript - “回调”只是一个命名约定吗?
- django - 如何获取数据库表中不存在的自定义列?
- playframework - 玩2.6 Ebeans关系错误