數據庫原理和應用

1.規則優化, 表現爲sql 語句優化

2. 物理優化, 表現爲 訪問路徑, 硬盤, 內存等,, 在已經創建了索引和排序文件的情況下, 需要考慮如何實現策略

3. 代價評估優化,  對多個候選策略 進行評估, 選擇代價最小的一個,

一般來說: 查詢的總代價 爲 cpu 和 I/O代價之和.  ()輸入輸出)   然後考慮查詢量

 

 

1: 內連接, 外聯,自連接

    內連接 產生記錄爲M*N, 

笛卡爾積: m*n條記錄,重複的也計算, select* from T1,T2, 若指定連接字段,爲子查詢, a 每一行與b每一行比較,相同的記錄產出,重複          的也產出.  和內連接 是一樣的產出記錄, 等價於 using(fild) 用法,只是

自然連接: 在相同列上有相同值 的記錄挑選出來,重複列去除,   將選擇的結果儘量提前執行.

深入可以看sql執行計劃

2  分表優化:

 將大表 分爲若干個小表:  1永久分裂, 設計時考慮, 二: 臨時分裂; 語法控制. 可以放在磁盤 或不同邏輯設備上

3.減少嵌套層數, 會成幾何級的降低效率

4.利用視圖:  從多個基本表或視圖中導出的表,數據庫只存定義,不存數據    . 爲虛擬表: 可以crud 隨真實數據而改變  優點: 提供某些數據的安全性, 異常數據複雜性, 簡化查詢, 特殊查詢  sql: create view <viewName> {[col1, col2, col3 ]}  as<select 語句>          +上  [with chech option] : 表示在對視圖修改,刪除,插入, 仍要保證 selec語句的表達式, 注意: 對視圖更新,刪除時,也會更改基本表,這種情況下也就在視圖只關聯一個表時, 但是大部分視圖都不可以更新: 1 帶有group by, 聚集函數.多表關聯; 來自表達式或常量,許刪不許改.

5. gront:授權, revoke: 撤銷授權    view  update query .....操作的權限

6. 索引優化: 索引佔用存儲空間和處理,並不是越多越好, 不必要的索引會是系統變慢,  難維護(更新難), 只讀取 ,不更新的話還好,

   如果創建了主鍵,那麼自動以主鍵升序 創建索引,

  建立 unique 索引事,列值唯一,cluster爲簇索引: 留待研究

 

7 注意 對null 值的處理

8.  sql爲原子性操作, commit 之前, 出現異常則,一系列操作回滾,無效, 也可以rollback, 回覆, 但是如果commi成功那麼久數據就永久性更改了. 即數據庫事務

8, distinct (fild): 明顯的有區別的,  去除重複

9  where (filed between  3 and 5)    exists: 檢查某個屬性是否有 元組,, 有返回記錄返回true,無返回false    _ 代表一個字符,%通配任意個字符,  not exists 相反

10  count  max min avg sum

11:   where  having count(column)>5  

12  集合操作符: union 並(聯合)   intersect 交(交叉,橫斷 橫切) 跟sql 語句  except  除(把.... 除外)  後面跟sql語句

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章