SQL優化 避免使用 IN 和 NOT IN

2021-08-09 13:31:09 字數 618 閱讀 6477

1、效率低

2、容易出現問題,或查詢結果有誤 (不能更嚴重的缺點)

insert into test2 (id2) values (null)

(跑題一句:建表的時候最好不要允許含空值,否則問題多多。)

1、用 exists 或 not exists 代替

select * from test1

where exists (select * from test2 where id2 = id1 )

select * from test1

where not exists (select * from test2 where id2 = id1 )

2、用join 代替

select id1 from test1

inner join test2 on id2 = id1

select id1 from test1

left join test2 on id2 = id1

where id2 is null

妥妥的沒有問題了!

優化sql,避免影響sql的執行效率

1.避免使用 select from 表名 只查詢需要的需要的字段 如果表字段較多,用到的字段佔表字段中的少數,使用select 造成資源浪費,影響sql執行效率 但是如果查詢的表字段較少,或者表中80 資料字段都是需要用到的,可以使用select from 表名 2.限制結果集的資料量。查詢時不要...

mysql 優化隱藏器 優化Sql語句,避免查詢慢

前言 在面試過程中,經常會被問到,如果sql語句執行耗時過長,該如何優化sql,提高查詢效率,在此我根據自己的實際經驗,做如下總結。一 explain分析sql語句 sql優化經常用到explain來檢視sql語句的執行計畫,以下5點是我們重點關注的地方 explain執行sql語句以後顯示的執行計...

避免全表掃瞄的sql優化

對查詢進行優化,應盡量避免全表掃瞄,首先應考慮在where 及order by 涉及的列上建立索引 嘗試下面的技巧以避免優化器錯選了表掃瞄 使用analyze table tbl name為掃瞄的表更新關鍵字分布。對掃瞄的表使用force index告知mysql,相對於使用給定的索引表掃瞄將非常耗...