Birincil anahtar sütununun uzunluğu sınırı nedir? Varchar'ı birincil anahtar olarak kullanacağım. PostgreSQL'in birincil anahtar olarak kullanıldığında varchar limitini belirtmesi gerekmediği için ne kadar bilgi, ne kadar süre bulamadım?PostgreSQL birincil anahtar uzunluğu sınırı
cevap
Maksimum varchar uzunluğunun Postgres yapılandırma ayarı olduğuna inanıyorum. Ancak, boyut olarak 1 GB'ı geçemeyeceği anlaşılıyor. Dedi sahip
, bir birincil anahtar olarak büyük bir varchar sütunu olması muhtemelen iyi bir fikir değil. Bir seri veya bigserial kullanmayı düşünün (http://www.postgresql.org/docs/current/interactive/datatype-numeric.html#DATATYPE-SERIAL)
+1. Bu, referans tablolarda kullanıldığında kötü performans verecektir (bağlantınızı en son PG sürümüne değiştirdim). – DrColossos
@DrColossos: Başka bir tabloda Yabancı Anahtar olarak belirtilen varchar alanını kullanıyorsanız, bu SADECE doğrudur. Eğer bu alanın sadece UNIQUE ve NOT NULL * ve * sadece bir tabloda başvurulan olması gerekiyorsa, sayısal bir "PRIMARY KEY" kelimesinin eklenmesi size gerçekten zarar verecektir. Artık sayısal NUMAR * ve * ek NUMARALI DEĞERLENDİRME NOT sütununda (veri bütünlüğünü sağlamak için gerekli) hem ek yüküne hem de karşı çıkacaksınız. Yabancı anahtarlardan bahsederken, ama "varchar kötü bir PK" demek yanıltıcıdır. –
@Matthew Takip ettiğiniz için teşekkürler: D Detayların ve yorumumu nasıl yorumlayacağımı tam olarak bilmiyordum. "[...] referans tabloları içinde kullanıldığında [...]", Yabancı Anahtarları kastettiğim kadar açıktı, ancak bu konu hakkında daha fazla bilgi verdiniz. Şimdi daha iyi biliyorum, teşekkürler! – DrColossos
Birincil anahtarlar içeren B-ağacı dizinindeki bir değer için maksimum uzunluk, varsayılan sayfa olarak bir arabellek sayfasının boyutunun üçte biridir (8192/3). = bayt.
Test yapmalısınız.
PostgreSQL 8.4'de birincil anahtar olarak tek varchar sütuna sahip tabloyla testler yaptım. Sonuç olarak, 235000 ASCII karakterini, 116000 polonyalı diacetik karakteri (örn. 'Ć') veya 75000 çince (ör. '汉') saklayabildim. Daha büyük kümeler için bir mesajım var:
BŁĄD: dizin satır boyutu 5404, btree maksimum değerini aşar, 2712
Ancak, ileti şu yanıtı verdi:
Bir arabellek sayfasının 1/3'ünden daha büyük değerler dizine eklenemez.
Bu nedenle değerlere izin verildi, ancak tüm dize benzersizlik denetimi için kullanılmadı.
Bu sütuna koyabileceğiniz çok büyük miktarda veri var. Ancak, yukarıda belirtildiği gibi, anahtarlarınız gibi uzun değerleri kullanmak zorunda kalırsanız tasarımınız zayıf olur. Yapay birincil anahtarı kullanmalısınız.
- 1. PostgreSQL kopyalama komutu birincil anahtar kimliği oluştur
- 2. 2 birincil anahtar başvuruyor 1 birincil anahtar
- 3. PHP preg_match uzunluğu 3276 sınırı
- 4. PostgreSQL: Korkunç yavaş SİPARİŞ anahtar sipariş olarak birincil anahtarla TARAFINDAN
- 5. Sadece mevcut değilse PostgreSQL tablosuna birincil anahtar ekleyin
- 6. django içinde birleşik birincil anahtar
- 7. Birincil birincil anahtar sütununa katılmayı nasıl oluşturabilirim?
- 8. Birincil anahtar ihlali kısıtlaması
- 9. nasıl bir birincil anahtar
- 10. Realm birincil anahtar geçişi
- 11. yeni birincil anahtar
- 12. Günlük kaydı günlüğünde metin uzunluğu sınırı
- 13. CakePHP'de yabancı anahtar değil birincil anahtar
- 14. CryptoJS ve anahtar/IV uzunluğu
- 15. jQGrid birincil anahtar sorunu silindiğinde
- 16. dynamoDB'nin birincil anahtar listesini alın
- 17. cassandra birincil anahtar sütunu kısıtlanamaz
- 18. Varlık Çerçevesinde Birincil/Yabancı Anahtar
- 19. Oracle'da iki sütunlu birincil anahtar?
- 20. Cassandra UPDATE birincil anahtar değeri
- 21. Tablo/görünümde birincil anahtar tanımlanmış
- 22. Fluent NHibernate, birincil anahtar kullanmıyor
- 23. Başlangıç Birincil Anahtar kullanımı/rol
- 24. NHibernate: Bir birincil anahtarı birincil anahtar olarak kullanma
- 25. Birincil Anahtarın bir parçası bir Yabancı Anahtar olan JPA'da bileşik birincil anahtar nasıl eşlenir?
- 26. "Belirtilen anahtar çok uzun; maksimum anahtar uzunluğu 1000 bayttır"
- 27. Postgresql - Ben birincil anahtar olarak UUID v1 kullanıyorum UUID v1 zaman damgası
- 28. R’den PostgreSQL tablolarına, otomatik bir birincil anahtarla nasıl veri yazarım?
- 29. Neden bir URL'nin uzunluğu üzerinde sunucu tarafı sınırı var?
- 30. TF400324: Temel bağlantı kapatıldı: İleti uzunluğu sınırı aşıldı
Görüyorum ki, böyle birincil anahtarda çok fazla veri koyabilirim, ama bu iyi bir fikir değil. Bütün cevaplar için teşekkürler. Varchar'ın kötü bir PK olduğunu bildiren – FolksLord