4

いくつかの条件下で のようなものに変更する必要がTあるいくつかの列を (暗黙的に) 含むテーブルがあります。char(8)char(64)

スペースを無駄にしたくないので、ここで質問があります。RDBMS 計算の観点 (列のデータ型の拡張) から見て、コストのかかる操作ですか? ベンチマークではなく、理論的に答えてもらいたいと思います。このため、データベースはテーブルの物理レイアウトを再配置する必要がありますか?

4

2 に答える 2

4

はい、非常に高価です。そのテーブルのすべての行を変更し、再度保存する必要があり、それらの列のいずれかを使用するすべての非クラスター化インデックスを再構築する必要があります。

であるためCHAR(x)、固定幅です。そのため、サイズを変更すると、すべての列を変更する必要があります。また、8 文字から 64 文字に変更すると、一部のページですべての行を保持できなくなり、すべてのオーバーヘッドでページ分割が発生する可能性があります。

于 2012-06-12T12:05:02.643 に答える
2

char データ型の長さを増やすと、データ ページの分割が必要になり、CPU 使用率とメモリの最適化とデータ圧縮の点でコストがかかります。

于 2012-06-12T12:03:01.177 に答える