MySQL数据表中,用户id这样的自增字段,应该是数字型还是字符型?各有什么优缺点? 财富值72
生活随笔
收集整理的這篇文章主要介紹了
MySQL数据表中,用户id这样的自增字段,应该是数字型还是字符型?各有什么优缺点? 财富值72
小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.
效率。
MySQL的AUTO_INCREMENT不支持字符型。占用空間不用多說, INT類型固定只占用4個(gè)字節(jié),能表示的范圍達(dá)到了-2^31 (-2,147,483,648) 到 2^31 – 1 (2,147,483,647) ,設(shè)為非負(fù)之后翻倍,而使用字符串想要表示這么大量的數(shù)據(jù)...
id一般來說不會是負(fù)數(shù),所以用UNSIGNED。 id相當(dāng)于身份證,不應(yīng)該也不能是NULL。 至于為什么是整數(shù),和兩個(gè)因素有關(guān):
占用空間。
效率則和索引的結(jié)構(gòu)有關(guān),MySQL使用B+樹作為索引的數(shù)據(jù)結(jié)構(gòu),如果使用自增整數(shù)的話,插入數(shù)據(jù)時(shí)最多只會引起節(jié)點(diǎn)的分裂,而使用字符串則有可能會插入到任何地方,這意味著可能會引起節(jié)點(diǎn)的移動(dòng)和分裂。其次是在數(shù)據(jù)查詢的時(shí)候,字符串的比較也要比整數(shù)的比較慢。
用自增的整數(shù)。
MySQL的AUTO_INCREMENT不支持字符型。占用空間不用多說, INT類型固定只占用4個(gè)字節(jié),能表示的范圍達(dá)到了-2^31 (-2,147,483,648) 到 2^31 – 1 (2,147,483,647) ,設(shè)為非負(fù)之后翻倍,而使用字符串想要表示這么大量的數(shù)據(jù)...
id一般來說不會是負(fù)數(shù),所以用UNSIGNED。 id相當(dāng)于身份證,不應(yīng)該也不能是NULL。 至于為什么是整數(shù),和兩個(gè)因素有關(guān):
占用空間。
效率則和索引的結(jié)構(gòu)有關(guān),MySQL使用B+樹作為索引的數(shù)據(jù)結(jié)構(gòu),如果使用自增整數(shù)的話,插入數(shù)據(jù)時(shí)最多只會引起節(jié)點(diǎn)的分裂,而使用字符串則有可能會插入到任何地方,這意味著可能會引起節(jié)點(diǎn)的移動(dòng)和分裂。其次是在數(shù)據(jù)查詢的時(shí)候,字符串的比較也要比整數(shù)的比較慢。
用自增的整數(shù)。
總結(jié)
以上是生活随笔為你收集整理的MySQL数据表中,用户id这样的自增字段,应该是数字型还是字符型?各有什么优缺点? 财富值72的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 模线性方程(中国剩余定理+扩展中国剩余定
- 下一篇: 成都大熊猫繁育基地要门票吗