一個mysql欄位字元長度1000,不需要用於搜尋,海量資料,把它設定為varchar好還是text好?

來源:互聯網
上載者:User
關鍵字 mysql php
一個mysql欄位最大字元長度1000,不需要用於搜尋,記錄條數可能過千萬,將來可能會水平分表,把它設定為varchar好還是text好?需不需要先垂直分表?

回複內容:

一個mysql欄位最大字元長度1000,不需要用於搜尋,記錄條數可能過千萬,將來可能會水平分表,把它設定為varchar好還是text好?需不需要先垂直分表?

mysql的記錄行長度是有限制的,不是無限長的,這個長度是64K,即65535個位元組,對所有的表都是一樣的。
MySQL對於變長類型的欄位會有1-2個位元組來儲存字元長度。
當字元數小於等於255時,MySQL只用1個位元組來記錄,因為2的8次方減1隻能存到255。
當字元數多餘255時,就得用2個位元組來存長度了。
在utf-8狀態下的varchar,最大隻能到 (65535 - 2) / 3 = 21844 餘 1。
在gbk狀態下的varchar, 最大隻能到 (65535 - 2) / 2 = 32766 餘 1

引用:https://ruby-china.org/topics/24920

1000這個長度很常見,大部分時候不需要分表。 也不需要用text。 直接用varchar就好。
在5.5以後的版本的mysql中,varchar不再有欄位長度限制。 但是需要注意的是,整行記錄有65535位元組的限制(是位元組,不是字元。如果是UTF-8編碼,單個字元可能佔用2-3個位元組)。

記錄在千萬級更是沒問題了。 讀寫十分頻繁,效能十分嚴苛時,才考慮將這個欄位分離出去。

VARCHAR() 最大255 只能存 text

  • 相關文章

    聯繫我們

    該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

    如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

    A Free Trial That Lets You Build Big!

    Start building with 50+ products and up to 12 months usage for Elastic Compute Service

    • Sales Support

      1 on 1 presale consultation

    • After-Sales Support

      24/7 Technical Support 6 Free Tickets per Quarter Faster Response

    • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.