看到網上好多的文章,關於in 和exists,我自己專門去校驗了一下,自己通過儲存過程,迴圈增加了10萬條資料,
//建立表
drop table if exists tb_test;
create table tb_test(
id int primary key auto_increment not null,
name varchar(20)
)//儲存過程
delimiter &&
begin
declare j int default 0;
while jinsert into tb_test(name) values('王威振');
set j=j+1;
end while;
end &&
delimiter
然後進行查詢
select * from tb_test where exists(select name from tb_test name = '王威振')
select * from tb_test where name in ('王威振')
其實exists 和in 要根據表的大小,查詢tb_test 資料大於條件中查詢的資料用in花費的成本低,否則用exists.
可以通過 explain format = json 檢視語句的執行計畫,然後看到花費的成本。
總的來說,select * from test t where t.id in (select id from tb ) 如果test 表資料》tb 用in
MySQL in和exists查詢對比
外表 tablea 內錶 tableb in select from tablea where tablea.id in select a id from tableb exists select from tablea where exists select from tableb where t...
MYSQL IN 與 EXISTS 的優化示例介紹
當b表的資料集必須小於a表的資料集時,用in優於exists,當a表的資料集系小於b表的資料集時,用exists優於in 優化原則 小表驅動大表,即小的資料集驅動大的資料集。原理 rbo select from a where id in select id from b 等價於 for selec...
MYSQL IN 與 EXISTS 的優化示例介紹
優化原則 小表驅動大表,即小的資料集驅動大的資料集。原理 rbo 程式設計客棧select from a where id in select id from b 等價於 for select id from b for select from a where a.id b.id 當b表的資料集必須...