1. 程式人生 > >mysql資料庫優化--(2)設計 欄位型別的選擇

mysql資料庫優化--(2)設計 欄位型別的選擇

建表時,往往需要考慮欄位的型別的問題.

可優化性不強,需要注意以下的幾個原則

2.1       儘可能佔用更少的儲存空間

多少位元組Byte!

tinyint:1, smallint 2, mediumint 3, int 4, bigint 8

但是小空間帶來的問題,儲存量的減少,範圍的減少.

Boolean =tinyint

datetime:8 timestamp:4 datetimeyear

datetime timestamp的選擇?

儲存 2039,超過了unix時間戳範圍:

timestamp欄位失敗了.

timestamp佔用4個位元組,儲存的時間範圍是有限的.1970-

2038-1-19 3:11

例如儲存登入時間.就可以用timestamp來儲存.

2.2       儘可能定長(佔用固定的儲存空間)資料型別

定長的資料型別的運算速度,要不變長的資料型別速度快.

型別:char(32), varchar(32)

資料:hellokang, hellokang

空間:32, 9+1(1個空間記錄長度)

如果在乎儲存空間:varchar

在乎的計算效率:char,最大長度為255

varchar() text的選擇?

varchar,佔用記錄的儲存空間

text,不佔用記錄的儲存空間

一條記錄的儲存的空間有最大的限制,預設是65535Bytes

浮點

(double8,float4定點(decimal)

浮點,更在乎儲存空間,不能保留全部的精度.定長資料型別,佔用固定的儲存空間.

定點,更在乎精度,保留精度.佔用非固定的儲存空間,隨著有效數位增加,而佔用更多的儲存空間.

PHP,float,他是雙精度的double,佔用8個位元組!

2.3       儘可能用整數代替字串

整數計算能力最強.

典型的 ipv4的儲存,可以轉成int.(儲存空間小,整數計算快)

使用起來是字串,儲存起來是整數

enum,列舉,單選: 0 / 1

set集合,複選: 1 2 3 4 5 ...