mysql 多少列合適 MySQL 請選擇合適的列

2021-10-20 22:20:53 字數 2145 閱讀 3176

字串型別

1、varchar

(1)儲存可變長字串。

理解:比固定長度占用更少的儲存空間,因為它只占用自己需要的空間。例外情況:使用row_format=fixed建立的myisam表,它為每行使用固定長度的空間,可能會造成浪費。

(2)儲存長度資訊。如果定義的列小於或等於255,則使用1個位元組儲存長度值,假設使用latin1字符集,如varchar(10)將占用11個位元組的儲存空間。反過來,varchar(1000),則占用1002個位元組的儲存空間。

(3)節約空間,對效能有幫助。

(4)5.0版本以上,無論是取值還是儲存,mysql都會保留字串末尾的空格。

只分配真正需要的空間

使用varchar(5)和varchar(200)儲存'hello'占用空間是一樣的。——這裡應該指的是磁碟上的空間。

那麼使用較短列有何優勢?——巨大的優勢

較大的列會使用更多的記憶體,因為mysql通常會分配固定大小的記憶體塊(如varchar(200)會用200個字元大小的記憶體空間)來儲存值(然後對值進行trim操作,最後放入磁碟)或取值。——這對排序或使用基於記憶體的臨時表尤其不好。

(1)固定長度。

(2)儲存值時,去掉末尾的空格。

(3)char常用於很短字串或長度近似相同的字串的時候很有用。如儲存使用者密碼的md5雜湊值,它的長度總是一樣的。

char優於varchar的地方?

1>> 對於經常改變的值,char優於varchar,因為固定長度行不容易產生碎片。——當最長長度遠大於平均長度,並且很少發生更新的時候,通常適合使用varchar。

2>>對於很短的列,char的效率也是高於varchar的。如對於單位元組字符集(如latin1),char(1)只會占用1個位元組,而varchar(2)會占用2個位元組(有乙個位元組用來儲存長度的資訊)。

用於儲存大量資料。

(1)innodb在它們較大的時候會使用「外部」儲存區域來進行儲存。——所以需要足夠的外部儲存空間來儲存實際的值。

(2)排序方式不同於其他字元型別,不會按照完整長度進行排序,而只是按照max_sort_length規定的前若干個位元組進行排序。

4、使用enum代替字串型別

(1)enum列可以儲存65 535個不同的字串。

(2)以緊湊方式儲存。根據列表中值的數量,把它們壓縮到1到2個位元組中。

(3)mysql在內部把每個值都儲存為整數,以表示值在列表中的位置。

(4)保留了乙份「查詢表」,來表示整數和字串在表的.frm檔案中的對映關係。

(5)enum字元列是固定的,新增、刪除字串須使用alter table。

(6)使用案例:許可權表中使用enum來儲存y值和n值。

使用方法:

在對enum列使用order by的時候,是按數字排序的,而不是字串排序。

日期和時間型別

datetime:儲存大範圍的值。封裝格式:yyyymmddhhmmss。——與時區無關,使用8位元組儲存空間。

timestamp:儲存自2023年1月1日午夜(格林尼治標準時間)以來的秒數。——使用4位元組儲存空間。

通常使用timestamp,它比datetime更節約空間。有時人們把unix的時間戳儲存為整數值,但是這通常沒有任何好處。——這種格式處理起來不太方便,我們並不推薦它。

MySql 查詢表有多少列

查詢乙個表共有多少列數 select count from information schema.columns where table schema 庫名 and table name 表名 查詢某個資料庫中某個表的所有列名 select column name from information ...

mysql使用者多少合適 MySQL使用者與許可權

使用者連線到mysql,並做各種查詢,在使用者和伺服器中間分為兩個階段 1 使用者是否有權連線上來 2 使用者是否有權執行此操作 如select,update等等 先看第乙個階段 伺服器如何判斷使用者是否有權連線上來 依據三個引數 你從哪來?host 你是誰?user 你的密碼是多少?passwor...

excel有多少行多少列

excel 中乙個工作表共有1048576行和256列。其中excel 行的編號從1到1048576,列的編號依次用字母a b c d e f iv來表示。本教程操作環境 windows7系統 microsoft office excel2010版 dell g3電腦。excel 中乙個工作表共有1...