日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 运维知识 > 数据库 >内容正文

数据库

数据库-优化-数据库结构的优化-表范式化优化

發布時間:2024/4/13 数据库 26 豆豆
生活随笔 收集整理的這篇文章主要介紹了 数据库-优化-数据库结构的优化-表范式化优化 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

數據庫表的范式化優化

1、表范式化

范式化是指數據庫設計的規范,目前說道范式化一般是指第三設計范式。也就是要求數據表中不存在非關鍵字段對任意候選關鍵字段的傳遞函數依賴則符合第三范式。

存在以下傳遞函數依賴關系: (商品名稱)->(分類)->(分類描述) 也就是說存在非關鍵字段 “分類描述”對關鍵字段“商品名稱”的傳遞函數依賴。 不符合第三范式要求的表存在以下問題: 1、 數據冗余:(分類,分類描述)對于每一個商品都會進行記錄。 2、 數據的插入異常 3、 數據的更新異常 4、 數據的刪除異常(刪除所有數據,分類和分類描述都會刪除,沒有所有的記錄) 如何轉換成符合第三范式的表(拆分表): 將原來的不符合第三范式的表拆分為3個表 商品表、分類表、分類和商品的關系表

2、反范式化

反范式化是指為了查詢效率的考慮把原本符合第三范式的表“適當”的增加冗余,以達到優化查詢效率的目的,反范式化是一種以空間來換取時間的操作。

如何查詢訂單信息?

select b.用戶名,b.電話,b.地址,a.訂單ID,sum(c.商品價格*c.商品數量)as 訂單價格 from 訂單表 as a join 用戶表 as b on a.用戶ID=b.訂單ID join 訂單商品表 as c on c.訂單ID=b.訂單ID group by b.用戶名,b.電話,b.地址,a.訂單ID

對于這樣的表結構,對于sum(),group by會產生臨時表,增加IO量。我們怎么優化都效率不高,那我們怎么樣才能讓它效率高了,就需要一些字段進行冗余。

訂單表中增加了冗余字段,那SQL該怎么寫了?

select a.用戶名,a.電話,a.地址,a.訂單ID,a.訂單價格 from 訂單表 as a

說明:表結構的設計直接涉及到SQL的查詢效率及優化。

總結

以上是生活随笔為你收集整理的数据库-优化-数据库结构的优化-表范式化优化的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。