いくつかの条件下で のようなものに変更する必要がT
あるいくつかの列を (暗黙的に) 含むテーブルがあります。char(8)
char(64)
スペースを無駄にしたくないので、ここで質問があります。RDBMS 計算の観点 (列のデータ型の拡張) から見て、コストのかかる操作ですか? ベンチマークではなく、理論的に答えてもらいたいと思います。このため、データベースはテーブルの物理レイアウトを再配置する必要がありますか?
いくつかの条件下で のようなものに変更する必要がT
あるいくつかの列を (暗黙的に) 含むテーブルがあります。char(8)
char(64)
スペースを無駄にしたくないので、ここで質問があります。RDBMS 計算の観点 (列のデータ型の拡張) から見て、コストのかかる操作ですか? ベンチマークではなく、理論的に答えてもらいたいと思います。このため、データベースはテーブルの物理レイアウトを再配置する必要がありますか?
はい、非常に高価です。そのテーブルのすべての行を変更し、再度保存する必要があり、それらの列のいずれかを使用するすべての非クラスター化インデックスを再構築する必要があります。
であるためCHAR(x)
、固定幅です。そのため、サイズを変更すると、すべての列を変更する必要があります。また、8 文字から 64 文字に変更すると、一部のページですべての行を保持できなくなり、すべてのオーバーヘッドでページ分割が発生する可能性があります。
char データ型の長さを増やすと、データ ページの分割が必要になり、CPU 使用率とメモリの最適化とデータ圧縮の点でコストがかかります。