將過去在開發(fā)中體會到經(jīng)驗整理出來。今天貼出來,整理,做個備忘。 tinyint 是-128到128 。當屬性設置為unsigned的時候。最大值就是255了?,F(xiàn)在知道為什么需要設置為unsigned屬性了。原來是為了最大限度的使用給予的存儲空間。如果不設置。那么假如你的值都
將過去在開發(fā)中體會到經(jīng)驗整理出來。今天貼出來,整理,做個備忘。
tinyint 是-128到128 。當屬性設置為unsigned的時候。最大值就是255了?,F(xiàn)在知道為什么需要設置為unsigned屬性了。原來是為了最大限度的使用給予的存儲空間。如果不設置。那么假如你的值都是正數(shù)的。那么-128這一百多個數(shù)字就相當于是浪費了。
tinyint會自動設置為tinyint(3)
smallint 不設置unsigned的時候,也有3萬多的樣子。
tinytext 就是255個字節(jié)。大概就是存儲127個中文的樣子 tinytext就相當于varchar類型。把它看成這樣的該類型就容易理解了。
int 類型phpmyadmin默認會設置int(10)
概念糾正:原來一直以為這里的10表示位數(shù)。直到有次想保存1101061021496,結(jié)果在字段中的值都變成了:4294967295。 看MySQL手冊上說:
(int后面括號的數(shù)字)顯示寬度并不限制可以在列內(nèi)保存的值的范圍,也不限制超過列的指定寬度的值的顯示。
int的范圍:-2147483648到2147483647。剛好是10個位,那么就是數(shù)十億級別的數(shù)字。數(shù)據(jù)庫設計經(jīng)驗:像訂單的值非常大。不確定,如果達到10位數(shù),還不如使用varchar類型。fangwei就沒有使用int,而是varchar類型
從上面也告訴我一個經(jīng)驗:如果保存在數(shù)據(jù)庫的值都變成一樣的。也就是無論我是1101061021496 還是1101061021569,結(jié)果都變成了固定的值,比如4294967295。那么可以考慮確認是否是數(shù)據(jù)庫該字段的范圍問題。這樣的問題出現(xiàn)過好幾次了。就是沒有掌握思路。導致浪費了不少時間。
將字段設置為not null 還出于另外一種考慮:mysql表的列中包含null的話,那么該列不會包含在所有中。也就是使用索引是無效的。所有,考慮今后會使用索引的字段,就要設置字段屬性是not null。
如果你要保存NULL,手動去設置它,而不是把它設為默認值。
考慮到這個字段今后會作為查詢關鍵字使用like的形式進行搜索。那么要將該字段定義成索引。這樣使用like查詢就會更快。
現(xiàn)在終于體會到到國外作者書籍上提到:設計數(shù)據(jù)庫之前要問自己,之后會查詢哪些數(shù)據(jù)。 考慮了這些,以后有什么查詢需要。結(jié)構(gòu)都能適應了。
//////////////////////////////////////////////////////////////////////////////////////////////
//////////////////////////////////////////////////////////////////////////////////////////////
2011.1.19 關于設計大流量網(wǎng)站數(shù)據(jù)庫,會員分表或者分庫的設計考慮:
主鍵不要設為自增型。設置為自增型的后果就是:今后無法分離在不同的mysql數(shù)據(jù)庫服務器上。比如id編號由于是自增的,所以兩個數(shù)據(jù)庫中可能會出現(xiàn)用戶編號都是10005的情況。
但是,mysql主鍵會自動設置為自增型。可以用另外一個字段來作為標識符。而不是自增型id號。方法:新增一個字段作為行的標識符。具體設計:一個表做兩個字段,一個是id作為主鍵,自增型,另外一個是uid,作為用戶的標識。
程序判斷上,是以uid作為判斷用戶的依據(jù)。而不是id主鍵作為判斷依據(jù)(程序上的失誤,改動比起數(shù)據(jù)庫設計失誤改動容易得多。因為你數(shù)據(jù)已經(jīng)入庫了。在修改起來就比較難了)
//////////////////////////////////////////////////////////////////////////////////////////////
//////////////////////////////////////////////////////////////////////////////////////////////
聲明:本網(wǎng)頁內(nèi)容旨在傳播知識,若有侵權等問題請及時與本網(wǎng)聯(lián)系,我們將在第一時間刪除處理。TEL:177 7030 7066 E-MAIL:11247931@qq.com