У меня есть две таблицы 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 (также имеет ли это какое-то отношение к версия?), заранее спасибо!
Я сам протестировал, и я обнаружил, что это связано с размером данных, другой размер даст другой результат, поэтому я спрашиваю его здесь