プライマリキーの列の長さの制限はいくらですか?私は主キーとしてvarcharを使用するつもりです。 PostgreSQLはプライマリキーとして使用するときにvarcharの制限を指定する必要がないので、情報が見つかりませんでした。PostgreSQLのプライマリキーの長さの制限
答えて
私は、最大varcharの長さはPostgresの設定の設定だと思います。ただし、1GBを超えることはできません。言われたこと
は、それが主キーとして大きなvarchar型の列を持つことが、おそらく良いアイデアではありません。 (http://www.postgresql.org/docs/current/interactive/datatype-numeric.html#DATATYPE-SERIAL)
+1は、varcharが悪いPKであることに注意してください。これは参照テーブル内で使用するとパフォーマンスが悪くなります(最新のPGバージョンへのリンクを変更しました)。 – DrColossos
@DrColossos:これは、上記のvarcharフィールドを別のテーブルの外部キーとして使用している場合にのみ当てはまります。そのフィールドが単にUNIQUEでなければならず、NULLではなく、*そのテーブルで参照されるだけの場合、数字の「PRIMARY KEY」を追加すると実際にあなたを傷つけるでしょう。 NOT NULL varchar列(データの整合性を保証するために必要)で数値PK *と*のUNIQUE INDEXをオーバーヘッドに掛けるようになりました。外来キーについて話すときには良いアドバイスですが、「varcharは悪いPKです」とは誤解を招くことです。 –
@Matthewフォローアップのおかげで:Dは詳細と私のコメントを解釈する方法を完全に認識していませんでした。私は "[...]"参照テーブル内で使用すると、私はForeign Keysを意味するとはっきりしていましたが、あなたは明らかにこのトピックをより深く理解しました。今私はよく知っている、ありがとう! – DrColossos
主キーを含むBツリーインデックスの値の最大長は、バッファページのサイズの3分の1です。既定ではfloor(8192/3)です。 = バイト。
テストを実施する必要があります。
私は、PostgreSQL 8.4で単一のvarcharカラムを主キーとするテストを行いました。その結果、235000のASCII文字、116000の対義語(f.g. 'ć')または75000中国語(f.g. '汉')を保存することができました。
インデックスの行サイズ5404がbtreeの最大値を超える2712 バッファーページの1/3より大きい値は索引付けできません。
値は許可されていますが、一意性チェックには文字列全体が使用されていません。
これは、この列に入れることができる非常に大量のデータです。しかし、上記のように、キーのような長い値を使用する必要がある場合は、設計が貧弱です。人工主キーを使用する必要があります。
- 1. プライマリキーの文字数制限
- 2. Bash PATHの長さ制限
- 3. 制限式の長さ
- 4. ASP.NetのコントロールのIDの長さ制限
- 5. pythonのサブプロセスの長さの制限
- 6. GmailのHTMLの長さの制限
- 7. ODataのURLの長さの制限
- 8. PostgreSQLのDataMapper文字列の長さを無制限に設定する方法
- 9. xpバッチファイルの行の長さ制限?
- 10. Ajax文字列の長さの制限?
- 11. 電話番号の長さの制限
- 12. jquery tablesorterフィルタの長さの制限
- 13. ソース行の長さの制限
- 14. xargsコマンドの長さの制限
- 15. SMS 120文字の長さ制限
- 16. Javaの長さ無制限AudioInputStream
- 17. テレグラフapiクエリの長さ制限
- 18. 制限WooCommerce製品の説明長さ
- 19. Pythonリストの長さを制限する
- 20. Rails 3.2 URLの長さに制限
- 21. Linux - テキストの長さを制限する
- 22. 制限長PdfPCellEvent
- 23. RSAのメッセージ長制限
- 24. ログバックログのテキスト長制限
- 25. PostgreSQL 9.1でのarray_aggの制限
- 26. mysql無制限プライマリキー自動インクリメント
- 27. 長いテキストフィールドの長さを制限する
- 28. PostgreSQL重複プライマリキー
- 29. Azure Mobile Appオフライン同期 - URLの長さの制限、バッチプル、queryIdの長さ
- 30. postgresqlのlisten ipsを制限する9
私は、このような主キーに多くのデータを入れることができますが、それは良い考えではありません。すべての答えをありがとう。 – FolksLord