MySQL優化(三) 表的設計
1、什麼樣的表才符合3正規化(3 NF)?
表的正規化,是首先符合1正規化,才能滿足2正規化,進一步才能滿足3正規化;(現在最高級別是6正規化)
第一正規化:1NF 是對屬性的原子性約束,要求表的屬性(列)具有原子性,不可再分解;(只要是關係型資料庫[mysql/oracle/db2/sql server/sysbase等]都滿足1NF)
第二正規化:2NF 是對記錄的唯一性約束,即表中的記錄是唯一的,通過給表設定一個主鍵(不包含業務邏輯,一般是自增的);
第三正規化:3NF 是表中不包含冗餘資料,就是說表的資訊能被推匯出來,就不應該單獨的設計一個欄位來存放;比如下面的設計就不滿足 3NF:
有時候設計表會反三正規化,來提高效率;在表的1 對 N 的情況下,為了提高效率,可能會在 1 這邊表中增加冗餘欄位。例子如下:
統計學生參加哪些單位的活動
相關推薦
MySQL優化(三) 表的設計
1、什麼樣的表才符合3正規化(3 NF)? 表的正規化,是首先符合1正規化,才能滿足2正規化,進一步才能滿足3正規化;(現在最高級別是6正規化) 第一正規化:1NF 是對屬性的原子性約束,要求表的屬性(列)具有原子性,不可再分解;(只要是關係型資料庫[mysql/oracle/db2/sql server
sql優化(三)--索引設計的原則
--- title: 不懂SQL優化?那你就OUT了(三) -- 索引(二) -- 索引的設計原則 date: 2018-11-03 categories: 資料庫優化 --- 上一遍部落格我們主要介紹了什麼是索引,為什麼要使用索引,索引的好處和如何建立索
mysql優化(三)–explain分析sql語句執行效率
mushu 釋出於 11個月前 (06-04) 分類:Mysql 閱讀(651) 評論(0) Explain命令在解決資料庫效能上是第一推薦使用命令,大部分的效能問題可以通過此命令來簡單的解決,Explain可以用來檢視SQL語句的執行效 果,可以幫助選擇更好的索引和優化查詢語句,寫出
MySQL優化(三):索引原理及索引優化
建立高效能索引索引是提高MySQL查詢效能的一個重要途徑,但過多的索引可能會導致過高的磁碟使用率以及過高的記憶體佔用,從而影響應用程式的整體效能。應當儘量避免事後才想起新增索引,因為事後可能需要監控大量的SQL才能定位到問題所在,而且新增索引的時間肯定是遠大於初始新增索引所需
MySQL基礎(三)表關係及資料的增刪改查
這一部分主要使用SQL中的DML,資料庫操作語言(data manipulation language),對資料庫資料進行增、刪、改、查操作,作為前提,先介紹關係型資料庫中的表關係。 關係型資料庫(RDBMS) MySQL作為關係型資料庫,資料是儲存在表
Mysql 數據庫優化(三)——分區和分表【個人經驗】
incr 返回 for 16px 使用 tree 主鍵 ref 相同 引:MyISAM存儲引擎的表在數據庫中,每一個表都被存放為三個以表名命名的物理文件。 1、首先肯定會有任何存儲引擎都不可缺少的存放表結構定義信息的.frm文件, 2、另外還有.MYD和
mysql資料庫優化(三)--分割槽
mysql的分割槽,分表 分割槽:把一個數據表的檔案和索引分散儲存在不同的物理檔案中。 特點:業務層透明,無需任何修改,即使從新分表,也是在mysql層進行更改(業務層程式碼不動) 分表:把原來的表根據條件分成多個表,如原來的表為 user;現在分成2個小表 user_1,user_2; 特點:業務層需要修
MySQL資料庫優化(三)——MySQL悲觀鎖&&樂觀鎖(併發控制)
一、悲觀鎖 1、排它鎖,當事務在操作資料時把這部分資料進行鎖定,直到操作完畢後再解鎖,其他事務操作才可操作該部分資料。這將防止其他程序讀取或修改表中的資料。 2、實現:大多數情況下依靠資料庫的鎖機制實現 一般使用 select ...for upd
【MySQL】基於MySQL的SQL優化(三)——對子查詢進行優化
通常情況下,需要把子查詢優化成JOIN查詢。 這是一個實現查詢演員名為“sandra”的表演影片片名的SQL,通過EXPLAIN關鍵字進行解析,這個查詢中包含三個子查詢,並且出現
mysql資料庫(三) 四中資料型別、資料表的建立
資料型別 資料型別是指列、儲存過程引數、表示式和區域性變數的資料特徵,它決定了資料的儲存格式,代表了不同的資訊型別。(簡單的就是理解就是,我們有時候儲存是需要資料的,有的資料是整數,有的資料是小數,還有可能是日期,還有可能是字元型) 一、資料型別之(
【MySql】Sql優化(三)——效能優化
一、前言 當資料庫資料達到一定數量的時候,結合資料庫連線池Druid的視覺化監控介面,對系統中執行的sql語句進行檢測,對使用頻繁、執行時間長的sql語句進行優化。 二、優化方案原則 [原則一:選擇需要優化的SQL] 1,選擇需要優化
mysql基礎(三)存儲引擎和鎖
mysql存儲引擎的概念: 關系型數據庫表是用於存儲和組織信息的數據結構,可以將表理解為由行和列組成的表格,各種各樣,不同的表結構意味著存儲不同類型的數據,在數據的處理上也會存在著差異,對於mysql來說,它提供了多種類型的存儲引擎,可以根據對數據處理的需求,選擇不同的存儲引擎,從而最大
MySQL命令(三)
-1 src 查詢 命令 表結構 ima color 價格 span 表結構存儲數據如下: 需求如下: 1.每項物品的的最高價格是多少?(下面這個查詢語句的結果集中你會發現 經銷商(dealer)的值不對,第二個語句就是對的)2.對每項物品,找出最貴價格的物品的經銷商。
Oracle數據庫(三)表操作,連接查詢,分頁
enc 解決辦法 oracl 主鍵 con sequence tno 插入 通過 復制表 --復制表 create table new_table as select * from Product --復制表結構不要數據 create table new
Mysql優化(轉)
進行 模式 系統 b樹 stat 內存 很多 提高 優化mysql Mysql優化主要通過執行計劃,索引,sql語句,調整mysql內部配置 (http://blog.chinaunix.net/uid-11640640-id-3426908.html) 一、優化概述
MySQL整理(三)
同時 border 最大 asc 簡單 join field com group by 一、簡單單表操作 (1)簡單CRUD 插入查詢結果 insert into table1(id,name,age) select id,name
流程中心使用詳情(三)流程設計
屬性 時也 所有 流程設計 沒有 工作 font 會議紀要 二次開發 第4章流程使用說明 以【出差申請】流程為例,講述如何通過流程中心定義一個完整的流程。 4.1 新建分類 流程中心->流程設置->分類設置,新建【行政管理】分類,如下圖所示: 點擊【保存】後,界
[JCIP筆記] (三)如何設計一個線程安全的對象
variable 原因 事情 display LV 技術 循環 reader 暴露 在當我們談論線程安全時,我們在談論什麽中,我們討論了怎樣通過Java的synchronize機制去避免幾個線程同時訪問一個變量時發生問題。憂國憂民的Brian Goetz大神在多年的開發過程
(三)表單和圖片
sele 技術 fcc 註意 round btn hold 分享 style 一、表單 1. 基本實例 單獨的表單控件會被自動賦予一些全局樣式。所有設置了 .form-control 類的 <input>、<textarea> 和 <sele
DDL語句(三) -- 表的管理
chang 創建表 添加列 from 列名 刪除表 column 修改表名 約束 一、創建表 語法: CREATE TABLE 【IF NOT EXISTS】 表名( 字段名 字段類型 【約束】, 字段名 字段類型 【約束】, ... 字