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

高性能MySQL:字符串類型(3)

2013-11-23 21:09:49  來源: MySQL 

   字符串類型(

  一種繞過這種限制的方式是按照需要的順序來定義枚舉列另外也可以在查詢中使用FIELD() 函數顯式地指定排序順序但這會導致MySQL 無法利用索引消除排序

  如果在定義時就是按照字母的順序就沒有必要這麼做了

  然後我們用主鍵列關聯這兩個表下面是所使用的查詢語句

  mysql> SELECT SQL_NO_CACHE COUNT(*)

  > FROM webservicecalls

  > JOIN webservicecalls USING(day account service method)

  我們用VARVHAR 和ENUM 分別測試了這個語句結果如表 所示

  表 :連接VARCHAR和ENUM列的速度

  從上面的結果可以看到當把列都轉換成ENUM 以後關聯變得很快但是當VARCHAR 列和ENUM 列進行關聯時則慢很多在本例中如果不是必須和VARCHAR 列進行關聯那麼轉換這些列為ENUM 就是個好主意這是一個通用的設計實踐查找表時采用整數主鍵而避免采用基於字符串的值進行關聯

  然而轉換列為枚舉型還有另一個好處根據SHOW TABLE STATUS 命令輸出結果中Data_length 列的值把這兩列轉換為ENUM 可以讓表的大小縮小/在某些情況下即使可能出現ENUM 和VARCHAR 進行關聯的情況這也是值得的注同樣轉換後主鍵也只有原來的一半大小了因為這是InnoDB 表如果表上有其他索引減小主鍵大小會使非主鍵索引也變得更小稍後再解釋這個問題

       返回目錄高性能MySQL

       編輯推薦

       ASPNET MVC 框架揭秘

       Oracle索引技術

       ASP NET開發培訓視頻教程

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


From:http://tw.wingwit.com/Article/program/MySQL/201311/29685.html
    推薦文章
    Copyright © 2005-2013 電腦知識網 Computer Knowledge   All rights reserved.