Memilih Jenis Data yang Tepat
Pilih jenis data yang paling efisien untuk kolom Anda guna meminimalkan penyimpanan dan mengoptimalkan pemrosesan kueri.
Memilih Jenis Data yang Tepat adalah pelajaran PostgreSQL Performance & Query Optimization gratis di CoddyKit. Ini adalah pelajaran 2 dari 4. Kamu bisa membaca pelajaran lengkapnya di bawah secara gratis — lalu praktikkan langsung di browser dengan editor kode bawaan dan tutor AI 24/7. Ini adalah bagian dari jalur belajar PostgreSQL Performance & Query Optimization, dan progresmu tersinkronisasi di web dan aplikasi CoddyKit. Kursus PostgreSQL Performance & Query Optimization mencakup 4 pelajaran total.
Bagian dari pelajaran ini belum diterjemahkan dan ditampilkan dalam bahasa Inggris.
Why Data Types Matter
Choosing the correct data type for your columns in PostgreSQL is a fundamental step in designing an efficient database.
It impacts storage, query performance, and data integrity. Selecting the right type ensures your data is stored efficiently and processed quickly.
Picking Integer Types
PostgreSQL offers several integer types, each with a different storage size and value range:
SMALLINT: 2 bytes, range -32,768 to +32,767INTEGER(orINT): 4 bytes, range -2,147,483,648 to +2,147,483,647BIGINT: 8 bytes, range -9,223,372,036,854,775,808 to +9,223,372,036,854,775,807
Always choose the smallest integer type that can safely store your expected data range to minimize disk space and improve performance.
Integer Type Demo
Let's see how different integer types are defined. Notice how we pick the smallest type that fits the value.
CREATE TABLE product_counts (
small_count SMALLINT,
medium_count INTEGER,
large_count BIGINT
);
INSERT INTO product_counts (small_count, medium_count, large_count)
VALUES (100, 50000, 1000000000);
SELECT * FROM product_counts;Numeric Precision
When dealing with decimal numbers, especially monetary values, precision is key:
NUMERIC(p, s): Stores exact numbers.pis the total number of digits (precision),sis the number of digits after the decimal point (scale). Essential for financial data.REAL(4 bytes) andDOUBLE PRECISION(8 bytes): Store approximate floating-point numbers. They are faster but can introduce tiny rounding errors, making them unsuitable for money.
Use NUMERIC when exactness is critical; use REAL or DOUBLE PRECISION for scientific or less critical calculations where approximation is acceptable.
Text Storage Choices
For storing text strings, PostgreSQL offers:
VARCHAR(n): Variable-length string with a user-defined maximum lengthn. If you try to insert a longer string, it will be truncated or an error will occur.TEXT: Variable-length string with no explicit maximum length. It's often the most flexible choice.CHAR(n): Fixed-length string. If the string is shorter thann, it's padded with spaces. Generally discouraged due to potential performance issues and space waste.
For most modern applications, VARCHAR (without a length, acting like TEXT) or simply TEXT are preferred for their flexibility and efficient storage.
VARCHAR vs. TEXT
Here's an example demonstrating VARCHAR with a length constraint and TEXT without one. Both store data efficiently based on actual length.
CREATE TABLE messages (
short_msg VARCHAR(50),
long_msg TEXT
);
INSERT INTO messages (short_msg, long_msg)
VALUES ('Hello World', 'This is a much longer message that can span multiple lines and characters.');
SELECT short_msg, LENGTH(short_msg), long_msg, LENGTH(long_msg) FROM messages;Handling Dates & Times
PostgreSQL provides robust date/time types:
DATE: Stores date only (year, month, day).TIME: Stores time of day only (hour, minute, second, fractional seconds).TIMESTAMP: Stores date and time. It does NOT store timezone information.TIMESTAMPTZ(TIMESTAMP WITH TIME ZONE): Stores date and time, and converts it to UTC upon storage. It's the recommended type for most applications to avoid timezone headaches.
Always prefer TIMESTAMPTZ for event timestamps unless you have a very specific reason not to.
Special Types: Boolean & UUID
Two other useful data types:
BOOLEAN: Stores true/false values. It's highly efficient, requiring only 1 byte of storage. PostgreSQL accepts 'true', 'false', 't', 'f', '1', '0', 'yes', 'no' as inputs.UUID: Stores Universally Unique Identifiers. These are 128-bit quantities, useful for generating unique primary keys without database sequence contention, especially in distributed systems.
UUIDs can be generated by PostgreSQL using functions like gen_random_uuid() from the pgcrypto extension.
Type Conversion Overhead
While PostgreSQL often handles implicit type conversions (e.g., converting a string '123' to an integer), this comes with a performance cost.
When you compare or join columns of different data types, PostgreSQL might need to perform a conversion on one or both sides, which can prevent indexes from being used and slow down queries.
Always strive to compare and join columns that have identical data types. If conversion is necessary, use explicit casting (e.g., column::INTEGER) to make it clear and sometimes help the query planner.
Data Type Challenge
Imagine you are designing a table to store user registration details. One column needs to store whether a user has verified their email, and another needs to store a unique, globally identifiable user ID that can be generated anywhere.
Data Type Summary
We've covered the importance of choosing appropriate data types for performance, storage, and integrity.
- Choose the smallest integer type that fits your data.
- Use
NUMERICfor exact decimal values (like money). - Prefer
TIMESTAMPTZfor storing dates and times with timezone awareness. BOOLEANis best for true/false flags, andUUIDfor globally unique identifiers.- Avoid unnecessary type conversions to maintain query performance.
Careful data type selection is a cornerstone of efficient database design.
Belajar SQL dengan tutor AI — gratis
Tulis dan jalankan kode asli di browser kamu, dapatkan bantuan instan dari tutor AI 24/7, dan lanjutkan di mana kamu tinggalkan di web atau aplikasi.
- Kursus
- 22
- Pelajaran
- 88
Pertanyaan yang Sering Diajukan
Apakah pelajaran “Memilih Jenis Data yang Tepat” gratis?
Ya — teks lengkap “Memilih Jenis Data yang Tepat” gratis dibaca di sini di web. Untuk praktiknya secara interaktif (editor kode bawaan dan tutor AI 24/7) dan buka sisa kursus PostgreSQL Performance & Query Optimization, upgrade ke CoddyKit PRO. Kursus PostgreSQL Performance & Query Optimization mencakup 4 pelajaran total.
Apa yang akan aku pelajari di “Memilih Jenis Data yang Tepat”?
Pilih jenis data yang paling efisien untuk kolom Anda guna meminimalkan penyimpanan dan mengoptimalkan pemrosesan kueri. Kamu berlatih PostgreSQL Performance & Query Optimization dengan kode praktik yang langsung kamu jalankan di browser, dan tutor AI 24/7 menjawab pertanyaanmu saat kamu mengerjakan pelajaran ini.
Apakah aku perlu pengalaman untuk memulai PostgreSQL Performance & Query Optimization?
Tidak diperlukan pengalaman sebelumnya. PostgreSQL Performance & Query Optimization di CoddyKit dirancang untuk pemula hingga pelajar tingkat lanjut, jadi kamu bisa memulai di sini atau dari awal dan belajar sesuai kecepatan kamu sendiri. Ini adalah pelajaran 2 dari 4.
Berapa lama pelajaran “Memilih Jenis Data yang Tepat” memakan waktu?
Sebagian besar pelajaran CoddyKit memakan waktu sekitar 5–10 menit. Setiap pelajaran ringkas dan interaktif, jadi kamu membuat kemajuan stabil dan melanjutkan dari tempat kamu tinggalkan di web dan aplikasi.
Bisakah aku menulis dan menjalankan kode dalam pelajaran PostgreSQL Performance & Query Optimization ini?
Ya. Setiap pelajaran PostgreSQL Performance & Query Optimization menyertakan editor kode bawaan, jadi kamu menulis dan menjalankan kode nyata langsung di browser dan mendapatkan umpan balik AI instan — tidak diperlukan penyiapan lokal.
Semua pelajaran dalam kursus ini
- Pertukaran Normalisasi dan Denormalisasi
- Memilih Jenis Data yang Tepat
- Mempartisi Tabel Besar
- Merancang Kunci Utama dan Kunci Pengganti