列数が多すぎるという質問に対するより微妙な回答を読んだので、フォローアップをお願いしたいと思います。
私はかなり厄介なプロジェクト (調査フレームワーク) を継承しましたが、DB 設計は実際には適切に正規化されていると主張することができます。つまり、人は実際には質問と同じ数の属性を持っています。
私は議論の中でその考えを擁護するつもりはありませんが、より差し迫った点は、私には時間が非常に限られているということです.私はこのフレームワークのユーザーを助けようとしています.今考えられる最も簡単な修正は行サイズを減らすことです. . 時間内に DB モデルを変更するスキルがあるとは思えません。
列数は現在 4661 ですが、少なくとも 3244、おそらくそれ以下に減らすことができます (実際の質問数を減らすことによって)。列の厳密な制限は 4096 ですが、おそらく行サイズの制限が 65,535 バイトであるため、現在は 2500 列を追加することさえできていません。
ただし、行サイズを計算すると、ほとんどすべての列が TINYINT (1 ~ 12 の範囲の調査回答) であるため、はるかに低い値になります。2000 TINYINT でも機能しません (失敗するクエリの例)。
ドキュメントに記載されている式を使用すると、 4996 バイト以下になります。
column.lengths = tinyints * 1
null.columns = length(all.columns)
variable.lengths.columns = 0
(row.length = 1+
(column.lengths)+
(null.columns + 7)/8+
(variable.lengths.columns)
)
## 4996
その行の長さの計算で何を誤解しましたか?