程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 數據庫知識 >> MYSQL數據庫 >> 關於MYSQL數據庫 >> MySQL 使用點滴

MySQL 使用點滴

編輯:關於MYSQL數據庫

  同樣的字符在不同字符集下占用空間可能不同

  默認的 latin1 字符集下,漢字占兩個字節,英文占1個字節。而在 gb2312 和 utf-8 等字符集下,英文也占兩個字節。從字符編碼的角度講似乎也無可非議,但是 MySQL 中這樣處理以前真沒有注意到過,char(10) 中的 10 正是按照字符集中的個數算的。處理數據量大的時候尤其需要注意,當然在 char 和 varchar 之間也可以權衡選擇。

  tinyint 和 smallint mediaint int

  無論你指定 tinyint(1) 還是 tinyint(2),一個 tinyint 字段中保存的值范圍都會是無符號時 0-255(有符號時 -127-128) ,其他 int 類型有類似情況。

  PHPMyAdmin 顯示的”總計”不准確

  這個應該不是 MySQL 的原因。在我 select * from innodb_table 的時候,顯示的“總計”數和 select count(*) from innodb_table 所得數可能不一致。這個以前也注意到過,之前還造成過幾次誤解。貌似並不是只有 InnoDB 表會出這樣的情況, MyISAM 表在 PHPMyAdmin 也有這樣的問題。

  內存表

  內存表有大小限制,內存文件超過 my.ini 中設置以後,會自動轉換部分到硬盤。內存表所占內存以固定的大小分配空間,即使一個表中只有一條記錄,也可能占幾M空間。內存表是有大小限制的,在 my.ini 中可以設置,當內存大小達到限制時,可能會報錯:#1114: The table ‘XXX’ is full 。上面是我實際遭遇到的,但是 my.ini 中有下面這段:

  # Maximum size for internal (in-memory) temporary tables. If a table

  # grows larger than this value, it is automatically converted to disk

  # based table This limitation is for a single table. There can be many

  # of them.

  tmp_table_size=13M

  MERG 表

  只有 MyISAM 表可以 merge ,MERG 的所有子表表結構要求一致。

  多表更新

  比較新的版本才支持同時 update 多個表。比如這樣 update user_state, user_state2 set user_state.state_0507_db2 = user_state2.state_0507_db2 where user_state.qq = user_state2.QQ

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