orm資料庫查詢優化及資料庫三大設計正規化總結

2022-03-18 17:25:23 字數 1252 閱讀 7290

only與defer

'''

only

只有only括號內的字段在查詢出的物件中,查詢該欄位無需走資料庫,查詢其他字段需要重走資料庫查詢操作

defer:效果與only相反

只有在查詢defer括號內的字段時才會走資料庫查詢操作

'''

select_related與prefetch_related
'''

select_related與prefetch_related查詢時均不走資料庫操作,因為資料全都封裝在得到的物件中了

select_related:內部就是聯表操作,將關聯後的大表內的資料全都封裝到物件中

注意:select_related括號內只能一對一或者多對一關係的字段,放多對多關係或者非外來鍵字段就會報錯

prefetch_related:內部就是子查詢,同樣也會將資料全都封裝到物件中

select_related與prefetch_related各有優缺點,具體用誰得結合實際情況

'''

第一正規化(1nf)
'''第一正規化書面話:必須保證資料庫表的每一列都是不可分割的基本資料項

大白話:必須保證每張表的每個列都不可再分的

'''按照第一正規化分表:

1nf->表:訂單號、訂單日期、顧客編號、顧客名字、位址、城市、聯絡**、商品編號、商品名、商品**

第二正規化(2nf)
'''第二正規化書面話:必須滿足第一正規化

保證每一行都要有唯一標識存在,

這個唯一屬性列被稱為主關鍵字或主鍵、主碼。

實體的屬性完全依賴於主關鍵字。

大白話:必須滿足第一正規化,必須保證每張表內都有主鍵,且非主鍵字段必須依賴主鍵字段

'''1nf->表:訂單號、訂單日期、顧客編號、顧客名字、位址、城市、聯絡**、商品編號、商品名、商品**

按照第二正規化分表:

表2:訂單號、訂單日期、商品編號、商品名、商品**

第三正規化(3nf)
'''第三正規化書面話:關係模型滿足第二正規化,所有非主屬性對任何候選關鍵字都不存在傳遞依賴。

大白話:必須滿足第二正規化,必須保證表內的每一列都是與主鍵存在直接聯絡的。

''' 表2:訂單號、訂單日期、商品編號、商品名、商品**

按照第三正規化分表:

3nf->表1:訂單號、訂單日期、顧客編號

表3:訂單號、訂單日期、商品編號

表4:商品編號、商品名、商品**

資料庫查詢優化

方法 1 1.對查詢進行優化,應盡量避免全表掃瞄,首先應考慮在 where 及 order by 涉及的列上建立索引。步驟閱讀 22.應盡量避免在 where 子句中對字段進行 null 值判斷,否則將導致引擎放棄使用索引而進行全表掃瞄,如 select id from t where num is...

資料庫查詢優化

本記載,用於保留面對大資料量時,查詢速率待優化,只記錄要點,具體如何操作,還需查詢 1 索引優化 通過建立合理高效的索引,提高查詢的速度.2 sql優化 根據需求,組織優化sql語句,使查詢效率達到最優,在很多情況下要考慮索引的作用 3 水平拆分 如果表的資料量增長特變塊,索引帶來的效能優化可能達到...

資料庫查詢優化

1 對查詢進行優化,應盡量避免全表掃瞄,首先應考慮在 where 及 order by 涉及的列上建立索引。2 應盡量避免在 where 子句中對字段進行 null 值判斷,否則將導致引擎放棄使用索引而進行全表掃瞄 如 select id from t where num is null 可以在nu...