SQL語句優化

時間 2022-07-24 17:15:17

1樓:我哭我哭哭哭

select id from table

where

( a=9 and b=7 )

or( a=0 and b=1 )

and c > 0

這個語句就一層沒有太大的優化

sql語句被解析的時候where條件是從後往前篩選的所以你可以根據篩選掉的資料量 把where條件位置變換一下無比將能篩選掉最多不符的資料放到最後

再就是為了減少資料的篩選量c>0最好改成c>=1

2樓:朱星的布拉格

首先要看你取出的資料要滿足什麼條件,直接在where裡寫出條件即可,不必對資料進行分析,然後將條件轉換為其他。比如,你將「id為03 04 07 08的資料」轉換為「( a=9 or a=0 ) and ( b=9 or b=0 ) and c > 0

」或者「( a=9 or a=0 ) and ( b=7 or b=1 ) and c > 0

」都不是很好,因為資料庫是變動的,「id為03 04 07 08的資料」現在經分析是等同於「( a=9 or a=0 ) and ( b=9 or b=0 ) and c > 0

」,不見得以後還等同於「( a=9 or a=0 ) and ( b=9 or b=0 ) and c > 0

」。所以我的建議是直接寫條件。

寫成:select id from table where id=『03』 or id=『04』 or id=『07』 or id=『08』 ;

或者:select id from table where id in(『03』,『04』,『07』,『08』);

in 表示取值在列出值裡面。

3樓:匿名使用者

select a.id from table a where a.id in(『03』,『04』,『07』,『08』);

sql語句求優化,聽說NOT IN語句不好求優化

阿冬 還要注意是在哪一種資料庫管理系統中,有些就不支援minus,不過not exists應該都支援。 一支紅纓槍 select name from test1 a where not exists select from test2 b where b.name admin and b.name ...

SQL語句優化,哪位高手來幫幫忙

你的條件,datediff dd,table1.time,2012 12 03 0 and datepart mi,1 time 00 and left 1 time,18 left 2 time,18 你在字段都加了function 注定了只能全表掃瞄。考慮一下不加function怎麼處理吧。建立...

SQL語句問題,SQL語句問題

select identity int,1,1 as newid,sale.prtid as id,products.prtname as 商品名稱,sum sale.prtnum as 銷售總量 into a from sale,products where sale.prtid products...