大きなテーブルのMySQL主キー列タイプ
-
03-07-2019 - |
質問
比較的大きなDBテーブル( 70万行)を使用してプロジェクトに取り組んでいます。
ミス、DBスキーマの設計中に作成しました。 行が増えていたときに、IDの列タイプbigint( x )を増やす必要がありました。
現在、bigint(44)です。 パフォーマンスを大幅に低下させる可能性があると考えたため、高いx値を設定することを恐れています。たぶん私は間違っている..
問題の解決を手伝ってください。
一度設定して、この問題を忘れてもよい列タイプは何ですか?
DBスキーマ設計の分野で何を学ぶべきですか?
解決
BIGINT(44)
として列を作成すると、" 44"は表示幅です-保存できる値の範囲や値の取得速度には影響しません。
自動インクリメントIDには、 UNSIGNED
番号を使用します。 BIGINT(44)UNSIGNED
。これにより、値の範囲が2倍になり、追加の制約が追加されます。これは通常、良いことです。
未署名のINTは最大4,294,967,295を保存します 署名のないBIGINTは最大18,446,744,073,709,551,615を保存します-すぐにそれを埋めることはありません。
最大IDがどれだけ速く成長しているかは言わない-多くの行を挿入しない場合は、 UNSIGNED INT
を使用する必要があります。スペースが少なくなります。
他のヒント
主キーはデフォルトで署名されないと思います。いずれにせよ、主キーに負の数を使用することはせいぜい眉をひそめ、物を壊します。
所属していません StackOverflow