表A包含列srno
和其他几列。
表B包含srno
和id
列。
我希望从给定srno
的B中获取id
,然后从表A中获取该srno
的记录。
例如,如果id为7,那么我可以通过两种方式考虑这样做:
select * from A as table_a, B as table_b where table_a.srno=table_b.srno and table_b.id=7;
和
select * from A where srno in (select srno from B where id=7);
两者都是这样做的。但是当两个表中都有大量的记录时,性能明智哪个更好?或两者都有相同的表现? (我们假设在这两个表上已经处理了正确的索引等。我只想在这两个查询之间进行性能比较)
答案 0 :(得分:0)
您的第二个查询总是会慢一些。 MySQL中的那种动态IN
子句绝不是一个好方法。
我的建议是使用第一个查询,但使用ANSI连接语法重写它并选择所需的最小列集,而不是SELECT *
。
这将是一个很好的起点:
select table_a.*
from A as table_a
inner join B as table_b on table_a.srno=table_b.srno
where table_b.id=7;