最近正在做美女站,經常用到資料庫
(1) 選擇最有效率的表名順序 (只在基於規則的優化器中有效):
oracle 的解析器按照從右到左的順序處理 from 子句中的表名,from 子句中寫在最後的表 (基礎表 driving table) 將被最先處理,在 from 子句中包含多個表的情況下,你必須選擇記錄條數最少的表作為基礎表。如果有 3 個以上的表連線查詢, 那就需要選擇交叉表 (intersection table) 作為基礎表,交叉表是指那個被其他表所引用的表。
(2) where 子句中的連線順序.:
oracle 採用自下而上的順序解析 where 子句, 根據這個原理,表之間的連線必須寫在其他 where 條件之前, 那些可以過濾掉最大數量記錄的條件必須寫在 where 子句的末尾。
(3) select 子句中避免使用 『 * 『:
oracle 在解析的過程中,會將』*』 依次轉換成所有的列名, 這個工作是通過查詢資料字典完成的, 這意味著將耗費更多的時間。
(4) 減少訪問資料庫的次數:
oracle 在內部執行了許多任務作: 解析 sql 語句,估算索引的利用率,繫結變數, 讀資料塊等。
(5) 在 sql*plus , sql*forms 和 pro*c 中重新設定 arraysize 引數, 可以增加每次資料庫訪問的檢索資料量 , 建議值為 200。
使用 decode 函式可以避免重複掃瞄相同記錄或重複連線相同的表。
(7) 整合簡單,無關聯的資料庫訪問:
(8) 刪除重覆記錄:
最高效的刪除重覆記錄方法 (因為使用了 rowid) 例子:
delete from emp e where e.rowid > (select min(x.rowid)
sql優化經驗總結
今天將mysql優化的一些經驗和總結整理一下,方便日後做專案優化sql語句做參考。裡面有我自己的經驗也有從網上直接複製貼上的。1索引問題 在做效能跟蹤分析過程中,經常發現有不少後台程式的效能問題是因為缺少合適索引造成的,有些表甚至乙個索引都沒有。這種情況往往都是因為在設計表時,沒去定義索引,而開發初...
總結 慢 SQL 問題經驗總結
1 導致慢 sql 的原因 在遇到慢 sql 情況時,不能簡單的把原因歸結為 sql 編寫問題 雖然這是最常見的因素 實際上導致慢 sql 有很多因素,甚至包括硬體和 mysql 本身的 bug。根據出現的概率從大到小,羅列如下 sql編寫問題 鎖業務例項相互幹繞對 io cpu 資源爭用 伺服器硬...
sql手動注入經驗總結
總結了一下sql幾個注入的基本思路和用法,現來分享一下 如何判斷有無注入 and1 2 步驟 1 找注入點 id 1等等 2 通過order by 找出一共有多少列數。報錯數字前乙個 id 1 order by 3 前面不用加and 3 利用union select 1,2,3 一般用null取代 ...