友快網

導航選單

oracle系統中量化的sql語句的使用方法不用* 代替所有列名!

不用“*”代替所有列名

在SELECT語句中,當查詢所有表中的列時,為了減少編寫SQL語句的難度和重複性的工作,可以使用“*”代替所有列名。用“*”代替所有列的列名對Oracle系統來說,會存在解析的動態問題。

SQL語句的執行過程如下。

(1)SQL語句首先從客戶端進行傳遞到伺服器端程序。

(2)在共享池中,查詢是否由此SQL語句。

(3)判斷SQL語句的語法正確性。

(4)查詢資料字典來驗證表和列定義。

(5)檢查當前使用者的操作許可權。

(6)確定語句的最佳執行計劃。

(7)將語句和執行計劃儲存到共享的SQL區。

在確保完整性的情況下多用COMMIT語句

當用戶將幾個相互聯絡的DML語句寫在一個Begin。。。End塊中時,建議在每個塊的End前面使用COMMIT語句。這樣可以實現對DML語句的及時提交,同時也釋放事務所佔用的資源

儘量用WHERE語句代替HAVING

在SELECT查詢語句中,若有查詢條件時,應使用WHERE語句進行條件篩選,分組時使用HAVING語句進行分組中的條件篩選,也就是先進行分組,然後執行分組後的條件篩選。

用TRUNCATE代替DELETE

一般在刪除表中的資料時,經常會使用DELETE語句。當用DELETE語句刪除資料時,Oracle會使用撤銷表空間來存放刪除操作的資訊。如果使用者沒有使用COMMIT提交語句,而是使用ROLLBACK語句進行回滾操作,則Oracle系統會將資料恢復到刪除之前的狀態。

儘量使用錶鏈接來代替表的多次查詢

在從多個表中查詢資料時,執行表的連結比使用巢狀多個表的查詢的效率要高,這是因為每次執行查詢語句時,Oracle內部要執行一系列的操作。所以要儘量減少訪問SQL語句的執行次數。

用EXISTS代替IN

在查詢時,IN運算子用於檢查一個值是否在列表中,它需要對查詢的表執行一個全表遍歷。而EXISTS只是檢查行是否存在。因此,在子查詢中,EXISTS的效能要比IN的效能要高的多。

用EXISTS代替DISTINCT

在連線查詢中,DISTINCT關鍵字用於禁止重複行的顯示;EXISTS用於檢查子查詢返回的行的存在性。

使用“<=”代替“<”

在有檢索條件的語句中,經常要使用運算子“<=”代替“<”,其中,前者表示小於等於某個值,後者表示小於某個值。

使用制定的詳細列名

在查詢中如果有多個表,如果查詢的列在多張表中都有,這時可以為每個表指定表的別名。

上一篇:【震驚】海底驚現巨蟒,竟是因為它!!!!!!!!!!!!!
下一篇:21光年外,外星人或正在監視地球!科學家發現外星人正在監視地球!