MySQL中範式與反範式的優缺點
範式化的優點:
範式化更新操作通常比反範式化要快。
當數據較好的範式化時,就只有很少或者沒有重復數據,所以,只需要修改更少的數據。
範式化的表通常更小,可以更好地放在內存裏,所以執行操作會更快。
很少有多余的數據意味著檢索列表數據更少需要distinct或者group by 語句。
範式化的缺點:
範式化設計schema通常需要關聯。稍微復雜一些的查詢語句在符合範式的schema上都可能需要至少一次關聯,也許更多。這樣做代價昂貴,也可能使一些索引策略無效。比如,範式化可能將列放在不同的表中,而這些列在同一個表中可以數據同一個索引。
反範式的優點
可以很好地避免關聯。
如果不需要關聯表,對大部分查詢最差情況,即沒有使用索引,全表掃描。當數據幣內存大時這可能比關聯要快很多, 這樣避免了隨機I/O。
在真實環境中很少會極端地使用範式化或者反範式化的schema。而是可能使用部分範式化的schema、緩存表、以及其它技巧。最常見的反範式化數據的方法是復制或者緩存,在不同的表中存儲相同的特定的列。
本文出自 “分享學習” 博客,謝絕轉載!
MySQL中範式與反範式的優缺點
相關推薦
MySQL中範式與反範式的優缺點
mysql範式化的優點:範式化更新操作通常比反範式化要快。當數據較好的範式化時,就只有很少或者沒有重復數據,所以,只需要修改更少的數據。範式化的表通常更小,可以更好地放在內存裏,所以執行操作會更快。很少有多余的數據意味著檢索列表數據更少需要distinct或者group by 語句。範式化的缺點:範式化設計s
FWORK-數據存儲篇 -- 範式與反模式 (學習和理解)
str -- 計數 查詢 空間 取數據 重點 保持數據 -s 理解 1、第二範式的側重點是非主鍵列是否完全依賴於主鍵,還是依賴於主鍵的一部分。第三範式的側重點是非主鍵列是直接依賴於主鍵,還是直接依賴於非主鍵列。 2、 反模式 範式可以避免數據冗余,減少數據庫的
MySQL三大範式和反範式
博文 減少 用戶 之間 小數 字段 聲明 tails 有一種 1. 第一範式確保數據表中每列(字段)的原子性。如果數據表中每個字段都是不可再分的最小數據單元,則滿足第一範式。例如:user用戶表,包含字段id,username,password 2. 第二範式在第一範式的基
2.2 範式和反範式
物理 學生 屬性 size 相同 缺點 體積 優缺點 第一範式 2.2.1 第一範式 原子性:要求屬性具有原子性,不可再分解。 如學生(學號,姓名,性別,出生年月日),如果認為最後一列還可以再分成(出生年,出生月,出生日),它就不是一範式了,否則就是。 2.2.2 第二範式
MySQL中資料中設計中的正規化與反正規化
設計關係資料庫時,遵從不同的規範要求,設計出合理的關係型資料庫,這些不同的規範要求被稱為不同的正規化,各種正規化呈遞次規範,越高的正規化資料庫冗餘越小。但是有些時候一昧的追求正規化減少冗餘,反而會降低資料讀寫的效率,這個時候就要反正規化,利用空間來換時間。 目前關係
Mysql中Left Join 與Right Join 與 Inner Join 與 Full Join的區別
chinese ron 兩張 ansi 左連接 ima money key sel 看看Left Join 與Right Join 與 Inner Join 與 Full Join對表進行操作後得到的結果。 在數據庫中新建兩張表,並插入要測試的數據。 新建表:
MySQL中使用索引與不使用索引的區別
pan 並發 並發數 table def ring primary innodb zab 為了回答索引對數據庫性能的影響,做了一次簡單的實驗。 測試環境 MySQL 5.7.10 innodb 100萬隨機數據 表結構 CREATE TABLE `
mysql 中 character set 與 collation 的理解
鏈接 ive apple bit spec 解釋 區別 大小 類型 使用 mysql 創建數據表的時候, 總免不了要涉及到 character set 和 collation 的概念, 之前不是很了解。 先來看看 character set 和 collation 的是什麽
day4-列表推導式與生成器表達式
圖片 表達 class bsp 技術 com 列表推導 png src 用列表推導式變成一行: 列表解析: 列表解析最終生成的是一個真實存數據的列表。 2,生成器表達式: next一次執行一次。 day4-列表推導式與生成器表達式
python—day14內置函數2、列表生成式與生成器表達式、模塊
left with open 列表生成式 表達式 兩件 style pytho per 數據 內置函數2、列表生成式與生成器表達式、模塊 內置函數2: 1 # pow(x,y,z) x,y,z x的y次方除於z 得出的結果是除數和余數 2 print(pow
mysql中int(3)與int(11)有什麽區別嗎?
png 不足 次方 表示 分享 什麽 否則 數據庫 SQ 註意:這裏的M代表的並不是存儲在數據庫中的具體的長度,以前總是會誤以為int(3)只能存儲3個長度的數字,int(11)就會存儲11個長度的數字,這是大錯特錯的。 其實當我們在選擇使用int的類型的時候,不論是i
數據結構與算法——棧實現後綴表達式與中綴表達式轉換
print 重復 .com 數據 nbsp 依次 中綴 遞歸實現 urn 計算: 運用後綴表達式進行計算的具體做法: 建立一個棧S 。從左到右讀表達式,如果讀到操作數就將它壓入棧S中,如果讀到n元運算符(即需要參數個數為n的運算符)則取出由棧頂向下的n項按操作數運算,再將運
SQL Server 與MySQL中排序規則與字符集相關知識的一點總結
bubuko col https 中文字符集 目前 創建 har 運算 進制 原文:SQL Server 與MySQL中排序規則與字符集相關知識的一點總結 字符集&&排序規則 字符集是針對不同語言的字符編碼的集合,比如UTF-8字符集,GBK字符集,G
Mysql中儲存過程與自定義函式的區別
建立儲存過程: CREATE [definer = {user|current_user}] PROCEDURE sp_name ([ proc_parameter [,proc_parameter ...]]) [ characteristi
mysql中對比 JSON_VALUE 與 JSON_QUERY
1. JSON概述 MySQL裡的json分為json array和json object。 $表示整個json物件,在索引資料時用下標(對於json array,從0開始)或鍵值(對於json object,含有特殊字元的key要用"括起來,比如$."my name")。 例如:[3, {"a": [5
java中序列化與反序列化的問題
java序列化是將java物件轉換為位元組序列的過程,變成計算機能夠儲存的二進位制序列 反序列化是將位元組序列恢復成java物件的過程 1.當兩個Java程序進行通訊時,能否實現程序間的物件傳送呢?答案是可以的。如何做到呢?這就需要Java序列化與反
深度學習基礎--正則化與norm--L1範數與L2範數的聯絡
L1範數與L2範數的聯絡 假設需要求解的目標函式為:E(x) = f(x) + r(x) 其中f(x)為損失函式,用來評價模型訓練損失,必須是任意的可微凸函式,r(x)為規範化約束因子,用來對模型進行限制。 根據模型引數的概率分佈不同,r(x)一般有: 1)L1正規化
MySQL 中的 FOUND_ROWS() 與 ROW_COUNT() 函式
原文地址:https://www.cnblogs.com/digdeep/p/4818660.html 移植sql server 的儲存過程到mysql中,遇到了sql server中的: IF @@ROWCOUNT < 1 對應到mysql中可以使用 FOUND_ROWS() 函
mysql中binlog_format模式與配置詳解
mysql複製主要有三種方式:基於SQL語句的複製(statement-based replication, SBR),基於行的複製(row-based replication, RBR),混合模式複製(mixed-based replication, MBR)。對應的,bi
MySQL中使用表別名與欄位別名
MySQL 表別名(Alias) SQL 表別名 在 SQL 語句中,可以為表名稱及欄位(列)名稱指定別名(Alias),別名是 SQL 標準語法,幾乎所有的資料庫系統都支援。通過關鍵字 AS 來指定。 表別名語法: SELECT column FROM tab