建議不要用“*”來代替所有的列名
Oracle數(shù)據(jù)庫中select語句中“*”會(huì)存在動(dòng)態(tài)解析問題兆解,建議采用實(shí)際列名坤候。
1吨拗、用TRUNCATE代替DELETE進(jìn)行數(shù)據(jù)刪除
delete進(jìn)行數(shù)據(jù)刪除箕慧,Oracle會(huì)把恢復(fù)信息存儲(chǔ)到撤銷表空間中检柬,如果沒有commit命令献联,而是rollback,表中的數(shù)據(jù)會(huì)恢復(fù)到刪除之前的狀態(tài)何址。使用truncate對表中的數(shù)據(jù)進(jìn)行刪除時(shí)里逆,系統(tǒng)不會(huì)將被刪除的數(shù)據(jù)寫到回滾段,速度提高很多用爪。
2原押、盡量多使用commit語句
在PL/SQL塊中,DML語句寫到BEGIN...END塊中偎血,在END前面寫COMMIT語句诸衔,及時(shí)釋放事務(wù)所占資源。
3颇玷、減少表的查詢次數(shù)
對同一個(gè)表的多條件多次查詢語句盡量合并在一個(gè)查詢語句中進(jìn)行查詢笨农。
4、用[NOT] EXISTS 代替 [NOT] IN
5帖渠、選擇驅(qū)動(dòng)表
驅(qū)動(dòng)表是最先被訪問的表(通常是全表掃描)谒亦,緊跟在FROM后邊的表,如果表的數(shù)據(jù)量較大空郊,且沒有索引份招,比較適合一次性的批量讀取,可以作為驅(qū)動(dòng)表狞甚。
6脾还、where子句的順序
Oracle采用自下而上的順序解析where子句,表之間的連接必須寫在其他where子句條件之前入愧,可以過濾掉最大數(shù)據(jù)記錄的條件寫在where子句的末尾。
7、索引的使用
列少棺蛛,大多數(shù)查詢包含簡單的where語句怔蚌,經(jīng)常查詢關(guān)鍵字為基礎(chǔ)的表。
8旁赊、避免全表掃描
全表的掃描的情況:語句中含有LIKE桦踊、IS NULL、IS NOT NULL终畅、籍胯!=?或者<>