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

2022-08-26 19:27:12 字數 1633 閱讀 7995

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

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語句的優化方法。

資料庫將一張表插入另一張表中

1.將一張表的資料插入到另一張表中 insert into seckill hjh id,code,name,drumbeating,strat time,productid,price,amount,pay time,num once,note,statu,cause,userid,check u...

資料庫調優教程 優化sql語句

上一章講了如何設計一張好的表,一張好的表自然需要好的sql語句去操作它。本章就來聊聊如何優化sql語句。1.sql語句優化原則 優化需要優化的query 定位優化物件效能瓶頸 從explain入手 盡可能在索引中完成排序 只取自己需要的column 盡可能避免複雜的join和子查詢 2.優化limi...

資料庫調優教程(七)索引的代價

4.索引的代價 前面幾講介紹了索引在提高效能方面的威力以及如何使用索引,但是索引也是有開銷的 1 占用磁碟空間 如前面所述,索引是有開銷的,表現在新增索引後.ibd檔案 innodb引擎 或者.myi檔案 myisam引擎 會變大。2 導致dml操作速度變慢 新增索引後之所以會快,是因為表依據索引對...