程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 數據庫知識 >> MYSQL數據庫 >> 關於MYSQL數據庫 >> MYSQL數據庫表設計與優化(二)

MYSQL數據庫表設計與優化(二)

編輯:關於MYSQL數據庫
決定數據類型的第一步是定義所存數數據的分類: 數值型, 字符串型還是臨時型等;除了一些特別的並不是那麼直觀的外, 這通常是很直觀的。

  接下來是選擇具體的數據類型, 許多MySQL的數據類型能存儲同一種數據, 但是在可存儲的數據范圍, 准確度或者存儲空間有些不同。 有些數據類型可能還有一些特殊的行為屬性。比如, DATETIME和TIMESTAMP都能存儲日期和日期, 而且都是准確到秒; 然而, TIMESTAMP占的數據空間只有DATETIME的一半, 而且是時區敏感的,同時有一些自動修改的機制。 另一個方面, 它能表示的數據范圍要小些, 有些屬性在某些時候是比較麻煩的。

  這裡只討論了一些基本的數據類型, 實際上, MySQL為了考慮兼容性, 一些數據類型是其他數據類型的別名而已, 例如,INTEGER, BOOl和NUMERIC, 他們是一樣的, 只是名字不同而已; 這些數據類型有時候容易叫人困惑, 但倒是多性能的影響不大。

  整數

  數字分為整數和實數, 如果存儲整型數,使用正型數類型:TINYINT, SMALLINT, MEDIUMINT, INT, or BIGINT, 分別是8, 16, 24, 32, 和64位, 能存儲的數值范圍是–2(N–1) to 2(N–1)–1, 其中N是位數。

  整數有一個可選的屬性UNSIGNED, 使用這個屬性使得無法表示負數, 而可表示的數值上限大體增加了1倍, 比如, TINYINT UNSIGNED 能存儲0 到255之間的值, 而不是TINYINT的–128 到 127.

  有符號和無符號數使用的數據存數空間是一樣的, 性能也差不多, 所以在使用時根據數據范圍選擇即可。

  數據類型的選擇通常會影響MySQL數據在磁盤,內存中的存儲, 然而,正型數的計算通常是以64為的BIGINT進行的,即使是在32位機器上。 (一些統計函數是例外的情況,這些函數通常使用DECIMAL和DOUBLE進行計算 )

  MySQL允許在選擇整型的時候指定一個寬度,如INT(11), 這對於許多應用來說是沒有實際意義的:它並不限制值的范圍, 只是簡單的用來在交互性工具, 比如命令行上指示數值輸出的字符寬度。 從存儲和計算的角度來看, INT(1)和INT(20)是一樣的。

  Falcon存儲引擎與其他的引起不一樣, MySQL AB按照自己的格式來存儲整數, 用戶多數據的存儲大小和格式沒有任何控制。一些第三方的存儲引擎, 如Brighthouse, 也有自己的存儲格式和壓縮方法。

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved