mysql 學習之三 數據類型

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、要注意浮點數中一些特殊值的處理。




發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章