电脑知识|欧美黑人一区二区三区|软件|欧美黑人一级爽快片淫片高清|系统|欧美黑人狂野猛交老妇|数据库|服务器|编程开发|网络运营|知识问答|技术教程文章 - 好吧啦网

您的位置:首頁技術文章
文章詳情頁

MySQL 數據類型選擇原則

瀏覽:63日期:2023-10-02 14:01:25
目錄小而美簡單至上避免空值選擇數據類型的步驟數據類型介紹一、串數據類型二、數值數據類型三、日期和時間數據類型四、二進制數據類型結語:小而美

通常來說,盡可能使用占用存儲空間小的數據類型來存儲數據。這類數據類型通常也會更快,并且占用的磁盤空間、內存乃至緩存都更小,而且占用的 CPU 處理周期也少。

但是,務必準確估計要存儲的數據值的范圍。因為在數據表結構的多個地方擴充數據范圍會是一個痛苦且耗時的過程。如果在猶豫哪種數據類型合適,那就選擇你認為不會超出范圍的最小空間的類型(在系統早期或者數據表 數據不多的情況下也可以進行調整)。

簡單至上

數據類型越簡單意味著處理數據的 CPU 周期越少。例如,整型相比字符型而言,處理起來更容易,這是因為字符集和比對使得字符的比較更復雜。舉兩個例子:應該使用 MySQL 內置的類型來存儲時間和日期,而不是字符串。IP 地址也應該使用整型存儲。

避免空值

很多數據表都是要可為空的列,雖然在應用中并不需要存儲缺省值NULL。通常來說,指定列為 NOT NULL 會比存儲 NULL 要更優。

MySQL 對于涉及到可為空的列優化起來更為困難,這是因為空值列使得索引、索引統計和值比較都變得復雜。而且,可為空的列占據的存儲空間更大,且需要特殊的處理。如果在可為空的列上指定了索引,這會需要每個索引入口多一個額外的字節,甚至會導致 MyISAM 引擎固定大小的索引轉換為可變大小的索引(例如對整數型字段做單列索引)。 不過,將 NULL 列轉換為 NOT NULL列的性能改進通常并不大。因此,除非已經發現了 NULL 列對性能有很大的影響,否則不要優先去對已有的數據表結構進行改動。但是,如果需要對列構建索引,那應該盡量避免該列值可以為空,通常好的習慣是直接設置該列為 NOT NULL。

當然,也有例外,例如在 InnoDB 中僅僅使用了一個 bit 來存儲 NULL 值,因此對大量數據存儲來說可以有效節省空間,但是如果是 MyISAM 引擎就不是這樣了。

選擇數據類型的步驟

選擇數據類型的第一步是決定數據列使用哪種常用的數據類型來表示,是數值型、字符串型還是時間類型。通常直接選擇就挺不錯的,但是在某些情況下會有特殊(比如金額、時間戳)。

第二步就是選擇具體的類型。MySQL對于同一種數據類型會有多種存儲方式,基于數據值范圍、精度以及存儲的物理空間,而還有些數據類型有一些特殊的屬性。

例如,DATETIME 和 TIMESTAMP 都可以存儲時間和日期,都可以精確到秒。然而,TIMESTAMP 類型只需要一半的存儲空間,并且包括了時區信息,還支持自動更新。但另一方面,它存儲的時間范圍更小,它的這些特殊特性可能變成障礙。

再來看看基本數據類型。MySQL 支持數據類型的別名,例如 INTEGER,BOOL 和 NUMERIC。這些僅僅是別名,雖然看起來會讓人困惑,但是實際上對性能沒有影響。如果使用了別名數據類型創建數據表,可回憶使用 SHOW CREATE TABLE,可以看到實際上 MySQL 會轉換為基礎數據類型,而不是別名。

數據類型:定義列中可以存儲什么數據以及該數據實際怎樣存儲的基本規則。

數據類型用于以下目的:

1、允許限制可存儲在列中的數據。如:數值數據類型列只能接受數值。

2、允許在內部更有效地存儲數據。如:用比文本串更簡潔的格式存儲數值和日期時間值。

3、允許變換排序順序。如:數據都作為串處理,則1位于10前,10位于2前(串以字典順序排序,從左邊開始比較,一次一個字符);作為數值數據類型,數值才能正確排序。

數據類型介紹一、串數據類型

最常用的數據類型,存儲串,如名字、地址、電話號碼等。

兩種基本的串類型:定長串和變長串。

定長串:接受長度固定的字符串,其長度是在創建表時指定的。定長列不允許多于指定的字符數目,它們分配的存儲空間與指定的一樣多。如:CHAR。

變長串:存儲可變長度的文本。有些變長數據類型具有最大的定長,有些則是完全變長的,不管是哪種,只有指定的數據會得到保存(額外的數據不保存),如:TEXT。

PS:MySQL處理定長列遠比處理變長列快得多。且MySQL不允許對變長列(或一個列的可變部分)進行索引。

數據類型說明:

CHAR:1~255個字符的定長串。長度必須在創建時指定,否則MySQL假定為CHAR(1)。 ENUM:接受最多64K個串組成的一個預定義集合的某個串。 LONGTEXT:與TEXT相同,但最大長度為4GB。 MEDIUMTEXT:與TEXT相同,但最大長度為16 K。 SET:接受最多64個串組成的一個預定義集合的零個或多個串。 TEXT:最大長度為64 K的變長文本。 TINYTEXT:與TEXT相同,但最大長度為255字節。 VARCHAR:長度可變,最多不超過255字節。如創建時指定為VARCHAR(n),則可存儲0到n個字符的變長串(其中n≤255)。

PS:

1、引號:使用何種形式的串數據類型,串值都必須括在引號內(通常使用單引號)。

2、須遵守的基本規則:如果數值是計算(求和、平均等)中使用的數值,則存儲在數值數據類型列中。如果數值作為字符串使用,則保存在串數據類型列中。如:在數值字段中存儲郵政編碼01234,保存的是數值1234,丟失了一位數字。

二、數值數據類型

存儲數值。MySQL支持多種數值數據類型,每種存儲的數值具有不同的取值范圍。

支持的取值范圍越大,所需存儲空間越多。此外,有的數值數據類型支持使用十進制小數點(和小數),而有的則只支持整數。表D-2列出了常用的MySQL數值數據類型。

PS:

1、所有數值數據類型(除BIT和BOOLEAN外)都可以有符號或無符號。有符號數值列可以存儲正或負的數值,無符號數值列只能存儲正數。

2、默認情況為有符號,若不需要存儲負值,可以使用UNSIGNED,這樣做將允許你存儲兩倍大小的值。

3、與串不同,數值不應該在引號內。

4、MySQL中沒有專門存儲貨幣的數據類型,一般情況下使用DECIMAL(8, 2)。

數據類型說明:

BIT:位字段,1~64位。在MySQL 5之前,BIT在功能上等價于TINYINT。 BIGINT:整數值,支持-9223372036854775808~9223372036854775807。如果是UNSIGNED,為0~18446744073709551615的數。 BOOLEAN(或BOOL):布爾標志,為0或者為1,主要用于開/關(on/off)標志。 DECIMAL(或DEC):精度可變的浮點值。 DOUBLE:雙精度浮點值 FLOAT:單精度浮點值 INT(或INTEGER):整數值,支持-2147483648~2147483647,UNSIGNED同上。 MEDIUMINT:整數值,支持-8388608~8388607,UNSIGNED同上。 REAL:4字節的浮點值。 SMALLINT:整數值,支持-32768~32767,UNSIGNED同上。 TINYINT:整數值,支持-128~127,UNSIGNED同上。三、日期和時間數據類型

數據類型說明:

DATE:表示1000-01-01~9999-12-31的日期,格式為YYYY-MM-DD。 DATETIME:DATE和TIME的組合。 TIMESTAMP:功能和DATETIME相同,但范圍較小。 TIME:格式為HH:MM:SS。 YEAR:2位數字表示,范圍是70~69(1970~2069);4位數字表示,范圍是1901~2155四、二進制數據類型

可存儲任何數據(甚至包括二進制信息),如圖像、多媒體、字處理文檔等。

數據類型說明:

BLOB:Blob最大長度為64KB。 MEDIUMBLOB:Blob最大長度為16 MB。 LONGBLOB:Blob最大長度為4GB。 TINYBLOB:Blob最大長度為255字節。結語:

MySQL 的數據表示方式很多,建議了解常用的數據類型的存儲范圍,占據的字節數,盡可能地根據產品預估數據值范圍或長度,選擇合適的數據類型,從而在創建表一開始就注重性能。后期再來調整的代價往往超出設計之初付出的細致思考的時間成本。

以上就是MySQL 為什么要選擇合適的數據類型的詳細內容,更多關于MySQL 數據類型的資料請關注好吧啦網其它相關文章!

標簽: MySQL 數據庫
相關文章:
主站蜘蛛池模板: 皮带式输送机械|链板式输送机|不锈钢输送机|网带输送机械设备——青岛鸿儒机械有限公司 | 学习安徽网| 防勒索软件_数据防泄密_Trellix(原McAfee)核心代理商_Trellix(原Fireeye)售后-广州文智信息科技有限公司 | 油漆辅料厂家_阴阳脚线_艺术漆厂家_内外墙涂料施工_乳胶漆专用防霉腻子粉_轻质粉刷石膏-魔法涂涂 | 三氯异氰尿酸-二氯-三氯-二氯异氰尿酸钠-优氯净-强氯精-消毒片-济南中北_优氯净厂家 | ERP企业管理系统永久免费版_在线ERP系统_OA办公_云版软件官网 | 智能家居全屋智能系统多少钱一套-小米全套价格、装修方案 | 展厅装修公司|企业展厅设计|展厅制作|展厅搭建—广州展厅装饰公司 | 电气控制系统集成商-PLC控制柜变频控制柜-非标自动化定制-电气控制柜成套-NIDEC CT变频器-威肯自动化控制 | 专业音响设备_舞台音响设备_会议音响工程-首选深圳一禾科技 | KBX-220倾斜开关|KBW-220P/L跑偏开关|拉绳开关|DHJY-I隔爆打滑开关|溜槽堵塞开关|欠速开关|声光报警器-山东卓信有限公司 | 青岛球场围网,青岛车间隔离网,青岛机器人围栏,青岛水源地围网,青岛围网,青岛隔离栅-青岛晟腾金属制品有限公司 | 球磨机 选矿球磨机 棒磨机 浮选机 分级机 选矿设备厂家 | 高柔性拖链电缆-聚氨酯卷筒电缆-柔性屏蔽电缆厂家-玖泰电缆 | SRRC认证_电磁兼容_EMC测试整改_FCC认证_SDOC认证-深圳市环测威检测技术有限公司 | 北京浩云律师事务所-企业法律顾问_破产清算等公司法律服务 | 耐高温硅酸铝板-硅酸铝棉保温施工|亿欧建设工程 | 杭州厂房降温,车间降温设备,车间通风降温,厂房降温方案,杭州嘉友实业爽风品牌 | led全彩屏-室内|学校|展厅|p3|户外|会议室|圆柱|p2.5LED显示屏-LED显示屏价格-LED互动地砖屏_蕙宇屏科技 | 线材成型机,线材折弯机,线材成型机厂家,贝朗自动化设备有限公司1 | 磁力去毛刺机_去毛刺磁力抛光机_磁力光饰机_磁力滚抛机_精密金属零件去毛刺机厂家-冠古科技 | 防水套管厂家_刚性防水套管_柔性防水套管_不锈钢防水套管-郑州中泰管道 | 施工电梯_齿条货梯_烟囱电梯_物料提升机-河南大诚机械制造有限公司 | 太空舱_民宿太空舱厂家_移动房屋太空舱价格-豪品建筑 | 双杰天平-国产双杰电子天平-美国双杰-常熟双杰仪器 | 小型UV打印机-UV平板打印机-大型uv打印机-UV打印机源头厂家 |松普集团 | 样品瓶(色谱样品瓶)百科-浙江哈迈科技有限公司 | 超细粉碎机|超微气流磨|气流分级机|粉体改性设备|超微粉碎设备-山东埃尔派粉碎机厂家 | 代写标书-专业代做标书-商业计划书代写「深圳卓越创兴公司」 | 武汉刮刮奖_刮刮卡印刷厂_为企业提供门票印刷_武汉合格证印刷_现金劵代金券印刷制作 - 武汉泽雅印刷有限公司 | 安驭邦官网-双向万能直角铣头,加工中心侧铣头,角度头[厂家直销] 闸阀_截止阀_止回阀「生产厂家」-上海卡比阀门有限公司 | 诸城网站建设-网络推广-网站优化-阿里巴巴托管-诸城恒泰互联 | 博博会2021_中国博物馆及相关产品与技术博览会【博博会】 | 字典-新华字典-在线字典查字-字典趣 | 橡胶膜片,夹布膜片,橡胶隔膜密封,泵阀设备密封膜片-衡水汉丰橡塑科技公司网站 | 口信网(kousing.com) - 行业资讯_行业展会_行业培训_行业资料 | (中山|佛山|江门)环氧地坪漆,停车场地板漆,车库地板漆,聚氨酯地板漆-中山永旺地坪漆厂家 | 电缆接头-防爆电缆接头-格兰头-金属电缆接头-防爆填料函 | 武汉高低温试验箱_恒温恒湿试验箱厂家-武汉蓝锐环境科技有限公司 | 压力喷雾干燥机,喷雾干燥设备,柱塞隔膜泵-无锡市闻华干燥设备有限公司 | 桨叶搅拌机_螺旋挤压/方盒旋切造粒机厂家-无锡市鸿诚输送机械有限公司 |