熱點推薦:
您现在的位置: 電腦知識網 >> 編程 >> MySQL >> 正文

高性能MySQL:位數據類型

2022-06-13   來源: MySQL 

   位數據類型

  這是相當令人費解的所以我們認為應該謹慎使用BIT 類型對於大部分應用最好避免使用這種類型

  如果想在一個bit 的存儲空間中存儲一個true/false 值另一個方法是創建一個可以為空的CHAR() 列該列可以保存空值(NULL)或者長度為零的字符串(空字符串)

  SET

  如果需要保存很多true/false 值可以考慮合並這些列到一個SET 數據類型它在MySQL 內部是以一系列打包的位的集合來表示的這樣就有效地利用了存儲空間並且MySQL 有像FIND_IN_SET() 和FIELD() 這樣的函數方便地在查詢中使用它的主要缺點是改變列的定義的代價較高需要ALTER TABLE這對大表來說是非常昂貴的操作(但是本章的後面給出了解決辦法)一般來說也無法在SET 列上通過索引查找

  在整數列上進行按位操作

  一種替代SET 的方式是使用一個整數包裝一系列的位例如可以把 個位包裝到一個TINYINT 中並且按位操作來使用可以在應用中為每個位定義名稱常量來簡化這個工作

  比起SET這種辦法主要的好處在於可以不使用ALTER TABLE 改變字段代表的枚舉缺點是查詢語句更難寫並且更難理解(當第 個bit 位被設置時是什麼意思?)一些人非常適應這種方式也有一些人不適應所以是否采用這種技術取決於個人的偏好

  一個包裝位的應用的例子是保存權限的訪問控制列表(ACL)每個位或者SET 元素代表一個值例如CAN_READCAN_WRITE或者CAN_DELETE如果使用SET 列可以讓MySQL 在列定義裡存儲位到值的映射關系如果使用整數列則可以在應用代碼裡存儲這個對應關系這是使用SET 列時的查詢

  這裡我們使用MySQL變量來定義值但是也可以在代碼裡使用常量來代替

      返回目錄高性能MySQL

       編輯推薦

       ASPNET MVC 框架揭秘

       Oracle索引技術

       ASP NET開發培訓視頻教程

  數據倉庫與數據挖掘培訓視頻教程


From:http://tw.wingwit.com/Article/program/MySQL/201311/29683.html
    Copyright © 2005-2022 電腦知識網 Computer Knowledge   All rights reserved.