幫幫我優化一下SQL語句,有兩個in

2025-07-23 07:50:21 字數 3684 閱讀 7475

1樓:射手幽靈伊

把in的這種方式,換成join操作。

比如:select * from tabel_a a where in ( select id from table_b b )

可以改成。select a.* from table_a a,(select id from table_b ) b

where =

求幫忙優化一小段in巢狀的sql語句

2樓:網友

試試這個:

select a.* from a a

left join b b on =

where exists (

select from c c

where = and name like concat('%', '123', '%'));

還要檢查索引是否合理哦!

列id name 是否建立了索引。

sql 語句 in的優化。

3樓:網友

假設原來的句子是。

select * from t1 where in (select from t2 where

和你的很類似。

你用子查詢 很慢。

我們現在修改為:

select t1.* from t1 ,t2 where = and

這裡使用了關聯查詢代替了子查詢大大提高效率。

其次你可以考慮在表上加索引,提高查詢速度。

4樓:網友

嘗試在 in 的這個欄位上建索引。

5樓:網友

這樣試下:

把id放到一張表中,where id in(select id from 表)

資料庫select in語句怎麼優化

6樓:網友

1. 和 都應該有索引,不然怎麼弄都慢的2. 換用存在語法代替in語法,樓上有說的3. 不覺得連線語法會比存在語法快很多,lz可以試一下。

4. 試試以下變通會不會快一點。

select sum(cnt) from (select (select count(*)as cnt from receivefax t where = as cnt from tmp_duanxin_ljx_20100402 td );

我試了一下這樣比存在語法要快一倍,連線語法和存在語法的速度差別不大你是說td表中可能有重複的嗎?如果這樣的話,我這個查詢應該是沒有壓縮重複的,連線查詢也沒有壓縮,存在和in查詢都是忽略了td中的重複的。至於t中的重複,都是*肯定沒有壓縮的。

查詢優化是很複雜的,和具體的表的設計情況、表中資料的重複情況等等也有很大關係的,你自己用多種方法試一試吧,如果是oracle 在pl/sql中執行完了,按f5進去可以看具體的執**況,其它的一般也帶查詢分析器之類的,只有這樣才能真正看出你的sql語句的執行效率的。

7樓:寂寞偉哥

select count(*)from receivefax t where

exists (select from tmp_duanxin_ljx_20100402 td where

試試這個。我覺得你應該使用表連線更有效率:

select count(*)from receivefax t, tmp_duanxin_ljx_20100402 td where

8樓:網友

select count(*)from receivefax tinner join tmp_duanxin_ljx_20100402 td

onin的效率低,而且如果是oracle的話,對於in子句結果集的數量也有限制。

因為沒有你那麼大的資料量環境,所以無法測試比較執行時間。

高手幫我優化一下sql語句

9樓:匿名使用者

sql 語句中,, 都需要建立索引;

最主要是and econtent like '%訂單狀態修改為:4已消費%'引數, like 會遍歷mallorderhistory表,最好econtent 也建立索引。

10樓:猴勻乃

可以將子查詢(select max( from table t2 where 'type1' and 'd')

建立臨時表,再對nametype加索引可以更快因為你的操作用的是過濾後的結果集,所以得寫兩次,可以現在一張臨時表插入過濾後的結果,再對那張臨時表做操作就不用寫兩次了。

sql語句in幾千個,怎麼優化

11樓:

建乙個表id_list,專門放這些個id,然後建個索引select

from tbltest a,id_list bwhere

12樓:全嗲逗樂

查詢這些id所在行的orderno 或者其他欄位是否有相似的地方,比如假設這幾百個orderno 都是『a123...型別。

那麼就可以where orderno like 'a123%'

怎樣優化有條件in這個sql語句

13樓:齋溶

能不能優化關鍵就看兩個欄位是否有什麼規律可言了ntransdirection,。美觀的話,時間那裡可以用between ..and

14樓:來自戶部巷絕代佳人的天空

我也覺得不能在優化了,坐等高手。

sql查詢優化問題 去掉了乙個巢狀in查詢居然更慢了,為什嗎

15樓:智者總要千慮

如果子查詢資料量比較大的話,可以試著用exist。

not exist一般都是與子查詢一起使用。 in可以與子查詢一起使用,也可以直接in (a,b...

會針對子查詢的表使用索引。 not exist會對主子查詢都會使用索引。 in與子查詢一起使用的時候,只能針對主查詢使用索引。

not in則不會使用任何索引。 注意,一直以來認為exists比in效率高的說法是不準確的。

in 是把外表和內表作hash 連線,而exists是對外表作loop迴圈,每次loop迴圈再對內表進行查詢。

如果查詢的兩個表大小相當,那麼用in和exists差別不大。

如果兩個表中乙個較小,乙個是大表,則子查詢表大的用exists,子查詢表小的用in:

例如:表a(小表),表b(大表)1:select * from a where cc in (select cc from b)

效率低,用到了a表上cc列的索引;select * from a where exists(select cc from b where cc=

效率高,用到了b表上cc列的索引。

相反的2:select * from b where cc in (select cc from a)

效率高,用到了b表上cc列的索引;select * from b where exists(select cc from a where cc=

效率低,用到了a表上cc列的索引。

not in 和not exists如果查詢語句使用了not in 那麼內外表都進行全表掃瞄,沒有用到索引;而not extsts 的子查詢依然能用到表上的索引。所以無論那個表大,用not exists都比not in要快。

這個迷底是什麼,幫幫我吧,兩個英語謎語,幫幫我吧

1.pen 2.because the relasion of them are son,father and grandfather 第一個是pen,第二個是因為是爺爺,爸爸和兒子 兩個爸爸,兩個兒子 幫我解解謎語吧!謎面是 六一在上頭,田字跟在後。雙腳站土裡,是個小朋友。打一字 謎底是 童 幫我...

請幫幫我解一下這兩道題丶謝謝,請幫我算一下這道題,謝謝

詳細過程請見 望採納,謝謝。由你的問題可得出,2個三角型等於3個正方形,那麼1個三角形等於1.5個正方形 3個正方形等於專4個圓形,那麼屬,2個圓形就等於1.5個正方形 最後1個三角形 1個正方形 2個圓形等於400,那麼把剛剛的代入就等於1.5個正方形 1.5個正方形 1個正方形等於400,那麼一...

幫我解釋一下這段sql語句的意思,還有執行會報錯,那位大兄弟

你不給我表結構,我就幫你猜 場景應該是這樣的,15的這張表是14這張表的父表,當14表中某個主題沒有 純粹猜的,預設值為 0 就需要用他父類的表中的主題進行填充,從而產生了這sql,也就是說,這條sql是用15表的ccid來更新14表中的ccid,更新的條件是14表中的ccid為 0 更新的值是15...