一.表設計過程中應該注意的數據類型
- 1)更小的通常更好 控制字節長度
- 2)使用合適的數據類型: 如tinyint只占8個位,char(1024)與varchar(1024)的對比,char用於類似定長數據存儲比varchar節省空間,如:uuid(32),可以用char(32).
- 3)盡量避免NULL建議使用NOT NULL DEFAULT ''
- 4)NULL的列會讓索引統計和值比較都更復雜。可為NULL的列會占據更多的磁盤空間,在Mysql中也需要更多復雜的處理程
二.索引設計過程中應該注意的點:
- 1)選擇唯一性索引 唯一性索引的值是唯一的,可以更快速的通過該索引來確定某條記錄,保證物理上面唯一
- 2)為經常需要排序、分組和聯合操作的字段建立索引 ,經常需要ORDER BY、GROUP BY、DISTINCT和UNION等操作的字段,排序操作會浪費很多時間
- 3)常作為查詢條件的字段建立索引 如果某個字段經常用來做查詢條件,那么該字段的查詢速度會影響整個表的查詢速
- 4)數據少的地方不必建立索引:例如gender性別字段,僅有男女2中數據, 如果在這個字段建立索引,缺點:1.索引占用內存,2.索引性能差
三.關於SQL的執行計划
使用explain關鍵字可以分析SQL的執行計划
下面是對比圖:
數據少的字段建立索引
建立索引前
建議索引后(性能提升較少)
數據多的字段建立索引
建立索引前
建立索引后