国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 數據庫 > MySQL > 正文

MySQL 建表的優化策略 小結

2024-07-24 12:43:53
字體:
來源:轉載
供稿:網友
目錄
1. 字符集的選擇 1
2. 主鍵 1
3. 外鍵 2
4. 索引 2
4.1. 以下情況適合于創建索引 2
4.2. 以下的情況下不適合創建索引 3
4.3. 聯合索引 3
4.4. 索引長度 4
5. 特殊字段 4
5.1. 冗余字段 4
5.2. 分割字段 4
5.3. BLOB和CLOB 5
6. 特殊 5
6.1. 表格分割 5
6.2. 使用非事務表類型 5

1. 字符集的選擇
如果確認全部是中文,不會使用多語言以及中文無法表示的字符,那么GBK是首選。
采用UTF-8編碼會占用3個字節,而GBK只需要2個字節。
2. 主鍵
盡可能使用長度短的主鍵
系統的自增類型AUTO_INCREMEN, 而不是使用類似uuid()等類型。如果可以使用外鍵做主鍵,則更好。比如1:1的關系,使用主表的id作為從表的主鍵。
主鍵的字段長度需要根據需要指定。
tinyint 從 2的7次方-1 :-128 到 127
smallint 從 2的15次方-1 :-32768 到 32767
mediumint 表示為 2的23次方-1: 從 -8388608 到8388607
int 表示為 2的31次方-1
bigint 表示為 2的63次方-1

在主鍵上無需建單獨的索引,因為系統內部為主鍵建立了聚簇索引。
允許在其它索引上包含主鍵列。
3. 外鍵
外鍵會影響插入和更新性能,對于批量可靠數據的插入,建議先屏蔽外鍵檢查。
對于數據量大的表,建議去掉外鍵,改由應用程序進行數據完整性檢查。
盡可能用選用對應主表的主鍵作作為外鍵,避免選擇長度很大的主表唯一鍵作為外鍵。
外鍵是默認加上索引的
4. 索引
創建索引,要在適當的表,適當的列創建適當數量的適當索引。在查詢優先和更新優先之間做平衡。
4.1. 以下情況適合于創建索引
在經常需要搜索的列上,可以加快搜索的速度
在作為主鍵的列上,強制該列的唯一性和組織表中數據的排列結構
在經常用在連接的列上,這些列主要是一些外鍵,可以加快連接的速度
在經常需要根據范圍進行搜索的列上創建索引,因為索引已經排序,其指定的范圍是連續的
在經常需要排序的列上創建索引,因為索引已經排序,這樣查詢可以利用索引的排序,加快排序查詢時間
在經常使用在WHERE子句中的列上面創建索引,加快條件的判斷速度。

4.2. 以下的情況下不適合創建索引
對于那些在查詢中很少使用或者參考的列不應該創建索引。這是因為,既然這些列很少使用到,因此有索引或者無索引,并不能提高查詢速度。相反,由于增加了索引,反而降低了系統的維護速度和增大了空間需求。
對于那些只有很少數據值的列也不應該增加索引。這是因為,由于這些列的取值很少,例如人事表的性別列,在查詢的結果中,結果集的數據行占了表中數據行的很大比例,即需要在表中搜索的數據行的比例很大。增加索引,并不能明顯加快檢索速度。
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 嘉义县| 绍兴市| 明星| 宁海县| 濮阳市| 阳西县| 远安县| 衢州市| 临泽县| 苍山县| 特克斯县| 辰溪县| 黄石市| 邯郸县| 阿拉善盟| 江门市| 扶沟县| 高淳县| 唐海县| 皋兰县| 乌兰浩特市| 鄯善县| 收藏| 台中县| 泰和县| 辛集市| 八宿县| 许昌县| 合作市| 扬中市| 达州市| 布尔津县| 鄄城县| 闽侯县| 昌乐县| 乌鲁木齐县| 隆昌县| 军事| 十堰市| 德格县| 榆社县|