今天是四月份最後一天的上班時間,明天就開始假期了!~三天!希望自己能利用這幾天好好補一補專業知識,今天晚上開始學習SQL優化課程!
常規優化
1:儘量避免使用* 列出所有列,因爲系統對*解析成列明會消耗一定時間,從而使得SQL變慢
2:TRUNCATE代替DELETE;當數據確定不要的時候,用TRUNCATE代替DELETE會更快,他不會講數據放到撤銷表空間,當然,用TRUNCATE就無法使用rollback恢復。
TRUNCATE TABLE TABLE_NAME DROP STORAGE;
3:在確保完整性的情況下,多用COMMIT,及時釋放資源,可以釋放:回滾段數據、被程序語句獲得的鎖、redo log buffer中的空間、ORACLE爲管理上述資源的內部花費
4:儘量減少對錶的查詢次數
5:用EXISTS代替IN
在子查詢中,in 字句會執行一個內部排序和合並,導致效率低下
表連接優化
1:驅動表的選擇
驅動表:最先被訪問的表(全掃描方式訪問),通常緊隨from後的會全掃描
2:where字句連接的順序
表之間的連接寫在前面,過濾的最大的卸載末尾
合理使用索引