資料庫調優教程(十一) 設計一張漂亮的表,資料庫調優

來源:互聯網
上載者:User

資料庫調優教程(十一) 設計一張漂亮的表,資料庫調優
四、           設計一張漂亮的表

上一章講了如何通過索引來提速我們的查詢語句,這一章讓我們回到資料庫開發的初始階段,建表。談談怎樣設計一張漂亮的表。


1.      滿足三範式

1NF: 即表的列的具有原子性,不可再分解,即列的資訊,不能分解, 只要資料庫是關係型資料庫(mysql/oracle/db2/informix/sysbase/sqlserver),就自動的滿足1NF

 

資料庫的分類

關係型資料庫:  mysql/oracle/db2/informix/sysbase/sql server

非關係型資料庫:  物件導向或者集合

面向文檔資料庫:   MongoDB

 

2NF: 表中的記錄是唯一的, 就滿足2NF, 通常我們設計一個主鍵來實現。一般情況下,表中都必須設定主鍵,並且一般不含商務邏輯,可以設定為自增長。

 

3NF: 即表中不要有冗餘資料, 就是說,表的資訊,如果能夠被推匯出來,就不應該單獨的設計一個欄位來存放.

有時候為了減少查詢次數,可以容忍冗餘。

 

2.      欄位數目不要過多

一張表的欄位過於龐大,會導致查詢時的掃描範圍加大,即使你並沒有查詢相應欄位。

所以,如果一張表某個欄位,資訊量大,但是我們很少查詢,則可以考慮把這些欄位,單獨的放入到一張表中,這種方式稱為垂直分割

 

3.      選擇合適的欄位類型

在建立表的時候要選取最適用的欄位屬性。

一般說來,資料庫中的表越小,在它上面執行的查詢也就會越快。因此,在建立表的時候,為了獲得更好的效能,我們可以將表中欄位的寬度設得儘可能小

舉個例子

11位的手機號

有兩種類型可以儲存

Bigint、char(11)。Int類型最大2147483647不可存

考慮到Bigint佔20位元組,而char(11)佔11*2=22(gbk)或11*3=33(utf-8),所以使用bigInt是最好的。

 

如果在建立表之後發現表的欄位設定不夠合理想修改時怎麼修改呢?


4.      修改表結構

如果發現表的欄位設定不夠合理想修改時怎麼修改呢,有兩種方法。

傳統方法

先使用show createtable 查看原先怎樣建立欄位的

然後就可以根據需要修改了

alter table patent_data modify mingcheng varchar(500) DEFAULT NULL COMMENT '名稱';


快速方法(簡單粗暴而高效)

建立一個結構是你所需要的空表,關閉mysql,在檔案夾中直接複製新產生的表的frm檔案替換掉原來表的的frm檔案

註:

Frm檔案位於mysql安裝目錄下的   /data/資料庫名   目錄下



本章結束,下一章將談談sql語句的最佳化方法。


相關文章

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.