1) 前提:Vtiger 8 のカスタム項目は“列追加”になる

Vtiger 8 では、モジュールの追加フィールド(カスタムフィールド)は vtiger_<module>cfカラム(列)として追加されます。

2) DB側のハード制限(MySQL 8 / InnoDB)

(A) カラム数上限:最大 1017 列

InnoDB テーブルは 最大 1017 カラムまでという上限があります。 (MySQL)
※Vtiger運用では、ここに到達する前に「行サイズ」や性能・保守性で先に限界が来ることがほとんどです。

(B) 行サイズ上限:最大 65,535 bytes(BLOB/TEXT 等は除外扱い)

MySQL には “テーブル行の内部表現”として最大 65,535 bytes という上限があります(BLOB/TEXT はこの計算への寄与が小さい)。 (MySQL)

(C) utf8mb4 は最大 4 bytes/文字

utf8mb4 は 最大4バイト/文字(utf8mb3は最大3バイト/文字)です。 (MySQL)
→ よって 同じ varchar(255) でも “宣言上の最大サイズ” が大きくなり、行サイズ上限に早く近づく、という見立てになります。

(D) 参考:インデックス接頭辞長 3072 bytes(DYNAMIC/COMPRESSED)

検索対象にしてインデックスを付けるとき、InnoDB(DYNAMIC/COMPRESSED)の インデックス接頭辞長上限は 3072 bytes です。 (MySQL)
※大量フィールドの“検索要件”がある場合、この制限が別のボトルネックになります。

3) utf8mb4 前提の「項目数」実務ガイドライン(Vtiger 8.x向け)

3-1. 推奨上限(運用・UI・性能の“ソフト上限”)

DBのハード制限より先に効いてくるため、まずはこれを基本ルールにします。

  • 快適運用(推奨)~80項目/モジュール
  • 許容(設計工夫前提)81~150項目
  • 要リファクタ(分割検討)151~250項目
  • 非推奨251項目以上(子モジュール化・分割が基本)

UI面の目安:

  • 一覧表示列:8~15列
  • 編集画面に同時表示:30~60項目(ブロック分割・関連タブへ退避)

3-2. DB制限を踏まえた「設計ルール」

既存ユーザのログイン