2012-02-12 5 views
0

または、特定のnの値(たとえば、2のべき乗)に対してMySQLが最適化されていますか?MySQL VARCHAR(n)テーブルのパフォーマンスは、nの値で定期的に低下しますか?

+0

「劣化」とはどういう意味ですか?それはなぜだろう。 –

+0

不明 - 何も無料です。何らかの形で劣化しない場合は、なぜVARCHAR(65000)ではなくVARCHAR(10)と言うでしょうか? – JDelage

+0

多くの理由がありますが、主なものは「あなたのドメインを正確にモデル化する」ことです。 –

答えて

2

MySQLは、特定のVARCHARフィールドの文字列の正確な長さに関する追加情報を保持します。このデータを格納するには、1または2バイトが必要です。 255バイトまで、MySQLはVARCHARの長さを格納するために余分な1バイトしか必要としません。 255を超えると、2バイトが使用されます。したがって、特定のnが重要な場合が1つあります。しかし、それ以外の場合は、このVARCHARカラムに関連する作業を行う際にMySQLがより多くのメモリを使用する必要があるため、より短くなります。 VARCHAR(1000)vs VARCHAR(20)の場合、メモリー内の一時表を使用するソートや操作などの処理には、かなりのコストがかかります。

Oreillyの「High Performance MySQL」の「Schema Optimization and Indexing」の章でこれをカバーする数少ないページがあります。

1

サイズのパターンには最適化されていません。大規模なvarcharフィールドで処理するのに時間がかかります(oo-er)。それを最適化する唯一の方法は、それが今まで必要としていた時間の中で最も長いものに制限することです。

関連する問題