1、字段提取要按照「需多少、提多少」的原則,避免「select *」,盡量使用「select 欄位1,欄位2,欄位3 ...」。實踐證明,每少提取乙個字段,資料庫提取速度就會有相應的提公升。提公升的速度還要由你捨棄的字段大小來決定。
2、盡量使用exists代替select count(*) 來判斷是否存在記錄。優化器優化exists謂詞時支援短路功能。只要找到一行,不需要再掃瞄其他行就可以確定該錶是否包涵行了。count函式只有在統計表中所有行的行數時使用。
3、盡量使用(not) exists代替(not) in 操作,in的sql效能總是比較低的。
--語句
select dname,deptno from dept where deptno not in(select deptno from emp where dept.deptno=emo.deptno)
--語句
select dname,deptno from dept where not exists(select deptno from emp where dept.deptno=emo.deptno)
4、盡量使用not in,可以用left outer join代替它。
5、盡量不要使用or,使用or會引起全表掃瞄,將大大降低查詢效率
6、注意where子句的寫法,必須考慮語句順序,應該根據索引順序、範圍大小來確定條件子句的前後順序,盡可能地讓字段順序與索引順序一致,範圍從大到小。
7、盡量使用「>=「,不用使用」>「
8、在編寫sql語句之前了解表的索引結構。有效地利用索引能夠避免不必要的全表掃瞄,縮短查詢時間。應該避免在where子句中使用is null、<>、!=、not、 not exist、not in、not like等命令,他們通常會引起全表掃瞄導致索引無效。
9、在where 子句中,任何對列的操作(函式、計算等)講導致索引失效,這些操作應該盡可能地移至等號右邊,如where substring(id,1,1)=『a『,應該寫成where id like 』a%『;where result*10> 30應該寫成where result >3;
SQL命令優化 積累
1 字段提取要按照 需多少 提多少 的原則,避免 select 盡量使用 select 欄位1,欄位2,欄位3 實踐證明,每少提取乙個字段,資料庫提取速度就會有相應的提公升。提公升的速度還要由你捨棄的字段大小來決定。2 盡量使用exists代替select count 來判斷是否存在記錄。優化器優化...
Sql 知識積累
複製個新錶,資料 結構 會進行複製,約束是不能進行複製的 select top 0 into 新錶的名稱 from 舊表的名稱 效率最高 top 獲取前多少行資料 select top 10 percent from 表的名稱 select distinct from 表的名稱 去除重複的資料,是對...
oracle語句優化積累
1 插入表時 alter table table name nologging 2 建立索引 不產生日誌,開啟並行 create index aaa index on table name colum nologging parallel 6 3 用exit代替in select count fro...