2011-04-11 13 views
0

私はテーブルを動的に作成しなければならない状況があります。いくつかの基準に応じて、特定のテーブルの列のサイズを変更します。
そのためには、1行のサイズを計算する必要があります。MySqlの単一行サイズ(エンジンMyISAM)を計算する数式

次の表を作成する場合

CREATE TABLEサンプル(ID int、name varchar(30));

これにより、上記の表の1行のサイズは、数式によってmysql表に行を格納するためのすべてのオーバーヘッドを考慮したものになります。

そうすることは可能でしょうか?

+0

**あなたがそれを必要としている理由も書いてください。あなたの問題に対してより良い解決策を提供することができます。 – vbence

+0

実際には、「調査管理」のための趣味プロジェクトを作成しています。質問のオプションが2000〜3000にほぼ等しく、調査ごとの質問は4096を超える可能性があります。答えとして1行として保存します表。 –

+0

あなたのコメントに基づいて自分の答えを編集しました。 – vbence

答えて

2

それはあなたが使用ストレージエンジンとそのテーブル用に選択された行フォーマット、そしてまたあなたのインデックスに依存します。しかし、それは非常に有用な情報ではありません。

編集:

私はあなたがやっている内容を正確に把握する際、正規化のみに逆行して示唆しています。大量のデータを処理するためのDBMSが作成されています。おそらく、ストラクチャリングされたデータを単一のフィールドにシリアル化する必要はありません。

アプリケーション層は、元の意味を取り戻すために、シリアライズされたフィールドデータをトークン化(または悪化)しなければならないことに注意してください。

私が考えることのできる唯一の例外はクライアント重いアーキテクチャです。クライアント側への処理を実際にサーバーから奪うと、転送のためにデータをシリアル化します。 - サーバー側のコード(PHPのような)でシリアル化された文字列のデータをDBに保存することは実用的ではありません。

(ただしは、直列化に建て使用してPHPのは、いくつかのケースでは良いアイデアかもしれません。あなたの現在のプロジェクトは、そこから利益を得ていないようです。)

0

VARCHARは可変長のデータ型であり、それは持っていますこの値は空でもかまいません。計算が正確でない可能性があります。 「Avg_row_length」フィールドをinformation_schemaに表示してください。 tables

関連する問題