2012-12-21 19 views
9

私は本当にわからない質問があります。 まず、私はdownvoteする必要がある場合は、私は本当に経験豊富な開発者の意見を聞きたいと思う自由に感じる。mysql無制限プライマリキー自動インクリメント

私はGoogleサークルのような機能を構築したいサイトを構築しています。

私のロジックはこれでしょう。 すべてのユーザーはサインアップ後にサークルにアタッチされます。

例ユーザーが

フォームが提出され、次のquerysは、すべての円がprimary key

を持つことになります。しかし、これはわからないイム何であるデータベース

**id | circle_name  | user_id** 
------------------------------------ 
1  | circle one  | 1 
------------------------------ 
2  | circle two  | 1 
------------------------------ 
3  | circle three  | 1 

にinsiertedされますサインアップするかどうかそれで、テーブルが壊れることを少し怖がっているimの後に、それが実際にもっと多くの生成を止めるidの数に達するかどうかということです。

データベースにintを指定すると、デフォルト値は11です。はい、私はそれを私が望む値に変更したり設定したりすることができますが、それでもなお高い値を与えることは良いアイデアですか?

またはプライマリキーの自動インクリメントを無制限にする可能性はありますか?

+0

理論的」可能ならばそれが価値があるのに対して、intフィールドの長さは実際の長さではありません。これは、基本的にzerofillカラムでのみ役に立ちます(ゼロ埋め込みの機能は、とにかく私の意見ではデータベースに属していません)。これを簡単にテストすることができます:5文字のintを 'int(3)'に挿入しようとします。それは喜んでそれを受け入れるでしょう。同様に、 'int'> 10は存在しません(2^31-1または2^32-1は10桁です)。 – Corbin

+0

"毎秒1Mレコードを挿入すると、上限に達するまでに584542年かかるでしょう。 @ 9000 .... http://stackoverflow.com/questions/5762327/mysql-what-if-i-need-a-very-very-big-autoincrement-id – bipen

答えて

13

意見やヘルプアウトをお願い致しまたは主キーの自動インクリメントが無制限であることを作るためにあらゆる可能性はありますか?

BIGINTを使用できます。

厳密に言えば、無制限ではありませんが、範囲は非常に巨大なので、実際に試してもすべての値を使い切ることはできません。

+3

あなたはそれを無意味になると思わないようにすることもできます大きな – Dale

+0

助けを借りてありがとう – Side

+1

これに加えて、BIGINTがもはや十分ではないほど多くのエントリーを持っているところに着くと、あなたは解決するために賢明な心を雇うことができますあなたのデータベースの問題。 –

3

ちょうどいくつかの数学を実行すると、あなた自身が答えを得るでしょう。長さは、値の数十億を保存することができ、あなたは、毎週が、それは「事実上」厳しいだろう破るポイントになって100万件の新規登録を持つことを期待していない場合でも、

関連する問題