| จำนวนเต็ม |
|---|
| จำนวนเต็มขนาด 2 ไบต์ ตั้งแต่ -32768 ถึง 32767 | ใช้ไม่บ่อย เฉพาะเมื่อจำเป็นต้องประหยัดพื้นที่ |
| จำนวนเต็มขนาด 4 ไบต์ ประมาณบวก/ลบ 2 พันล้าน | คอลัมน์จำนวนเต็มตั้งต้น |
| จำนวนเต็มขนาด 8 ไบต์ ประมาณบวก/ลบ 9 ล้านล้านล้าน | ตัวนับขนาดใหญ่มาก หรือไอดีจากระบบภายนอก |
| จำนวนเต็มขนาด 4 ไบต์ที่เพิ่มค่าอัตโนมัติ | คีย์เลขลำดับอัตโนมัติแบบเดิม ตั้งแต่ PG 10 แนะนำให้ใช้ GENERATED AS IDENTITY แทน |
| รูปแบบขนาด 2 ไบต์และ 8 ไบต์ของ serial | การนับเลขอัตโนมัติที่สอดคล้องกับคอลัมน์ smallint หรือ bigint |
| จำนวนเต็มที่ตารางสร้างให้อัตโนมัติ (GENERATED ALWAYS AS IDENTITY) | serial ยุคใหม่ เป็นมาตรฐาน SQL และปลอดภัยกว่าจากการแทรกค่าเอง |
| ทศนิยมและเลขทศนิยมลอยตัว |
|---|
| ทศนิยมแบบแม่นยำ ความละเอียดไม่จำกัด | เงิน และงานที่ยอมรับความคลาดเคลื่อนจากการปัดเศษไม่ได้ |
| เลขทศนิยมลอยตัวความละเอียดเดี่ยวขนาด 4 ไบต์ | ค่าเชิงวิทยาศาสตร์แบบโดยประมาณที่ความแม่นยำไม่ใช่ประเด็นสำคัญ |
| เลขทศนิยมลอยตัวความละเอียดสองเท่าขนาด 8 ไบต์ | ค่าเชิงภูมิศาสตร์ สถิติ และฟีเจอร์ของ ML |
| จำนวนเงินพร้อมโลเคลที่กำหนดตายตัว | ใช้ไม่บ่อย numeric ที่มีรหัสสกุลเงินฝั่งแอปพกพากว่า |
| ข้อความ |
|---|
| ข้อความความยาวคงที่ เติมช่องว่างให้เต็ม | โค้ดที่มีความกว้างแน่นอน แทบไม่จำเป็นต้องใช้ |
| ข้อความความยาวผันแปร พร้อมขีดจำกัดที่กำหนดหรือไม่ก็ได้ | สตริงที่มีขอบเขต เช่น ชื่อผู้ใช้หรืออีเมล |
| ข้อความความยาวผันแปรไม่จำกัดความยาว | คอลัมน์สตริงใช้งานทั่วไป ไม่มีโทษด้านประสิทธิภาพเทียบกับ varchar |
| เวลา |
|---|
| วันในปฏิทินโดยไม่มีเวลาของวัน | วันเกิดและวันครบกำหนด |
| เวลาของวัน มีหรือไม่มีเขตเวลา | การแจ้งเตือนรายวันหรือเวลาทำการของร้าน |
| วันที่และเวลาโดยไม่มีเขตเวลา | สคีมาแบบเดิม หลีกเลี่ยงสำหรับงานใหม่ |
| วันที่และเวลาที่เก็บแบบ UTC แสดงผลตามเขตเวลาของไคลเอนต์ | ค่าเริ่มต้นสำหรับช่วงเวลาในโลกจริงทุกกรณี เลือกแทน timestamp |
| ช่วงระยะเวลา เช่น 2 วันหรือ 3 ชั่วโมง | ระยะเวลา และการคำนวณวันที่ |
| บูลีน, UUID และไบต์ |
|---|
| จริงหรือเท็จ | แฟล็กและสวิตช์เปิด/ปิด |
| ตัวระบุเฉพาะในระดับสากลขนาด 128 บิต | ไอดีที่ไม่เรียงตามลำดับและเปิดเผยได้อย่างปลอดภัย (สร้างในแอปหรือด้วย gen_random_uuid) |
| ไบต์ไบนารีดิบ | บล็อบ รูปภาพ และข้อมูลแบบทึบ ไฟล์ขนาดใหญ่ควรใช้ object storage |
| สตริงของบิตแบบความยาวคงที่หรือผันแปร | แฟล็กแบบแพ็กและฟิลด์ของโปรโตคอล ค่าเปิด/ปิดเดี่ยวยังควรใช้ boolean |
| JSON และข้อมูลกึ่งมีโครงสร้าง |
|---|
| JSON ที่แยกวิเคราะห์เป็นรูปแบบไบนารีและสร้างอินเด็กซ์ได้ | ข้อมูลยืดหยุ่นหรือซ้อนโครงสร้าง เป็นคอลัมน์ JSON ที่แนะนำ (รองรับอินเด็กซ์ GIN) |
| JSON ที่เก็บเป็นข้อความต้นฉบับ | ใช้ไม่บ่อย เฉพาะเมื่อต้องรักษาลำดับคีย์หรือช่องว่างต้นฉบับ |
| ข้อความ XML | การเชื่อมต่อระบบเดิมที่ต้องใช้ XML |
| นิพจน์พาธที่คอมไพล์แล้วสำหรับนำทางข้อมูล JSON | การกรองใน jsonb ด้วย jsonb_path_query และโอเปอเรเตอร์ SQL/JSON |
| เครือข่ายและการค้นหา |
|---|
| ที่อยู่โฮสต์ IPv4 หรือ IPv6 | เก็บ IP ของไคลเอนต์หรือเซิร์ฟเวอร์ |
| บล็อกเครือข่าย IP เช่น 10.0.0.0/24 | กฎไฟร์วอลล์และช่วงของซับเน็ต |
| ที่อยู่ MAC ขนาด 6 ไบต์หรือ 8 ไบต์ (EUI-64) | ตัวระบุอุปกรณ์และอินเทอร์เฟซเครือข่าย |
| ข้อความที่ประมวลผลล่วงหน้าสำหรับการค้นหาเต็มข้อความ | การค้นหาในตัวของ Postgres ก่อนหันไปใช้เสิร์ชเอนจินแยกต่างหาก |
| คำค้นที่รวมกันด้วยโอเปอเรเตอร์ AND, OR และ prefix | ส่วนคำค้นของการค้นหาเต็มข้อความ จับคู่กับ tsvector ด้วย @@ |
| ตำแหน่งใน write-ahead log คือเลขลำดับของล็อก | การเฝ้าดูความล่าช้าของการจำลองข้อมูลและการสำรองข้อมูล |
| แบบรวมและขั้นสูง |
|---|
| อาร์เรย์ของประเภทฐานใดก็ได้ เช่น integer[] | รายการค่าอย่างง่าย ถ้าสมาชิกต้องมีคอลัมน์ของตัวเอง ให้ใช้ตารางลูก |
| หนึ่งค่าจากรายการคงที่ที่คุณกำหนด | ฟิลด์สถานะที่มีชุดตัวเลือกคงที่ |
| ประเภทแถวแบบกำหนดเอง ประกอบด้วยหลายฟิลด์ | กลุ่มฟิลด์ที่ซ้ำกันและใช้ร่วมกันหลายตาราง |
| ช่วงต่อเนื่องระหว่างขอบเขตสองค่า | ตารางเวลา ช่วงราคา และช่วงของเวอร์ชัน พร้อมโอเปอเรเตอร์ overlap |
| ประเภทฐานที่ห่อด้วยข้อจำกัดที่คุณกำหนด | กฎที่ใช้ซ้ำได้ เช่น อีเมลไม่ว่าง บังคับใช้กับทุกคอลัมน์ที่นำไปใช้ |
| แถวไม่มีชื่อของค่าที่มีประเภทกำกับ | ค่าที่ฟังก์ชัน PL/pgSQL คืน และผลลัพธ์คิวรีขั้นกลาง |
| ค่าเรขาคณิตสองมิติในตัว | เรขาคณิตระนาบอย่างง่าย ตำแหน่งจริงในโลกต้องใช้ PostGIS |
| ตัวระบุอ็อบเจกต์ระบบขนาด 4 ไบต์แบบไม่มีเครื่องหมาย | เชื่อมต่อตารางแคตตาล็อกของระบบ ไม่ใช่สำหรับคอลัมน์ของแอปพลิเคชัน |
| สตริงตัวระบุภายในความยาว 63 อักขระ | คิวรีแคตตาล็อก ข้อมูลที่ผู้ใช้เห็นให้ใช้ text ปกติ |
| ประเภทจากส่วนขยาย |
|---|
| คู่คีย์/ค่าสตริงในค่าเดียว (ส่วนขยาย) | แมปแบบแบน ปัจจุบัน jsonb ทำหน้าที่นี้ได้ดีกว่า |
| พาธป้ายกำกับแบบลำดับชั้น เช่น news.tech.ai (ส่วนขยาย) | โครงสร้างต้นไม้ พร้อมคิวรีบรรพบุรุษและลูกหลาน |
| ข้อความที่เปรียบเทียบโดยไม่สนใจตัวพิมพ์เล็ก/ใหญ่ (ส่วนขยาย) | ความไม่ซ้ำแบบไม่สนตัวพิมพ์ เช่น อีเมล โดยไม่ต้องมีอินเด็กซ์ lower() |
| อ็อบเจกต์ภูมิศาสตร์และเรขาคณิตจากส่วนขยาย PostGIS | คิวรีระยะทาง การครอบคลุม และอินเด็กซ์เชิงพื้นที่ |
| ฟังก์ชันจากส่วนขยายที่สร้างค่า UUID | การสร้างแบบเดิม ตั้งแต่ PG 13 มี gen_random_uuid() ในตัวแล้ว |