1. 固定長度數據列與可變長度的數據列
char 和varchar
CHAR 和VARCHAR 類型類似,但它們保存和檢索的方式不同。它們的最大長度和是否尾部空格被保留等方面也不同。在存儲或檢索過程中不進行大小寫轉換。
2.text 和blob
(1). BLOB和TEXT值也會引起自己的一些問題,特別是執行了大量的刪除或更新操作的時候。
刪除這種值會在數據表中留下很大的"空洞",以後填入這些"空洞"的記錄可能長度不同,爲了提高性能,建議定期使用OPTIMIZE TABLE 功能對這類表進行碎片整理.
(2). 使用合成的(synthetic)索引。合成的索引列在某些時候是有用的。一種辦法是根據其它的列的內容建立一個散列值,並把這個值存儲在單獨的數據列中。接下來你就可以通過檢索散列值找到數據行了。但是,我們要注意這種技術只能用於精確匹配的查詢(散列值對於類似<或>=等範圍搜索操作符是沒有用處的)。
3. 在不必要的時候避免檢索大型的BLOB或TEXT值。例如,SELECT *查詢就不是很好的想法。
4. 把BLOB或TEXT列分離到單獨的表中。
3 浮點數與定點數
在mysql 中float、double(或real)是浮點數,decimal(或numberic)是定點數。
浮點數相對於定點數的優點是在長度一定的情況下,浮點數能夠表示更大的數據範圍;它的缺點是會引起精度問題。
要注意:
1、浮點數存在誤差問題;
2、對貨幣等對精度敏感的數據,應該用定點數表示或存儲;
3、編程中,如果用到浮點數,要特別注意誤差問題,並儘量避免做浮點數比較;
4、要注意浮點數中一些特殊值的處理。