Indeks Separa dan Indeks Ungkapan
Pelajari cara mencipta indeks pada subset baris atau pada hasil ungkapan untuk pengoptimuman tersasar.
Indeks Separa dan Indeks Ungkapan ialah pelajaran Prestasi PostgreSQL & Pengoptimuman Pertanyaan percuma di CoddyKit. Ini ialah pelajaran 2 daripada 4. Sebanyak 3 pelajaran dalam laluan pembelajaran ini boleh dibaca sepenuhnya secara percuma — selepas itu, CoddyKit PRO membuka akses kepada semua pelajaran, serta latihan praktikal dengan penyunting kod terbina dalam dan tutor kecerdasan buatan yang tersedia 24/7. Pelajaran ini merupakan sebahagian daripada laluan pembelajaran Prestasi PostgreSQL & Pengoptimuman Pertanyaan, dan kemajuan anda disegerakkan merentas web serta aplikasi CoddyKit. Kursus Prestasi PostgreSQL & Pengoptimuman Pertanyaan merangkumi sejumlah 4 pelajaran.
Pengenalan kepada Indeks Bersasar
Selamat datang! Dalam pelajaran ini, kita akan mendalami dua jenis indeks khusus yang berkuasa dalam PostgreSQL: Indeks Separa dan Indeks Ungkapan.
Indeks ini membolehkan pengoptimuman yang sangat bersasar dengan menumpukan pada subset data tertentu atau hasil pengiraan, bukannya keseluruhan lajur.
Fokus dengan Indeks Separa
Indeks Separa ialah indeks yang merangkumi hanya sebahagian baris dalam jadual. Anda mentakrifkan subset ini menggunakan klausa WHERE semasa mencipta indeks.
Bayangkan ia sebagai penapisan indeks. Hanya baris yang memenuhi syarat WHERE akan dimasukkan dalam struktur indeks.
Kelebihan Indeks Separa
Mengapakah menggunakan indeks separa?
- Saiz Lebih Kecil: Indeks ini menggunakan kurang ruang cakera dan memori berbanding indeks penuh.
- Kemas Kini Lebih Pantas: Data yang lebih sedikit untuk diselenggara bermakna operasi
INSERT,UPDATEdanDELETEpada jadual yang diindeks menjadi lebih pantas. - Penggelembungan Berkurang: Indeks ini boleh mengurangkan penggelembungan indeks dengan ketara pada jadual yang barisnya kerap dikemas kini tetapi tidak memenuhi klausa
WHEREindeks.
Indeks ini sangat berguna apabila subset kecil baris kerap ditanya, seperti pengguna 'aktif' atau pesanan 'tertunda'.
Mencipta Indeks Separa
Sintaks untuk indeks separa adalah mudah. Anda hanya perlu menambah klausa WHERE pada pernyataan CREATE INDEX standard.
Syarat dalam klausa WHERE mestilah sepadan dengan syarat yang digunakan dalam pertanyaan anda agar indeks berkesan.
CREATE INDEX index_name
ON table_name (column_name)
WHERE condition;Indeks Separa dalam Tindakan
Mari lihat indeks separa dalam tindakan. Kita akan mencipta indeks pada order_date khusus untuk pesanan yang mempunyai status 'pending'. Ini biasa dalam perdagangan elektronik kerana pesanan 'pending' memerlukan perhatian segera.
Cuba jalankan kod untuk melihat cara ia berfungsi:
CREATE TABLE orders (
order_id SERIAL PRIMARY KEY,
customer_id INT,
order_date DATE,
status VARCHAR(20)
);
INSERT INTO orders (customer_id, order_date, status) VALUES
(101, '2023-01-15', 'completed'),
(102, '2023-01-16', 'pending'),
(103, '2023-01-17', 'completed'),
(104, '2023-01-18', 'pending'),
(105, '2023-01-19', 'completed'),
(106, '2023-01-20', 'completed'),
(107, '2023-01-21', 'pending');
CREATE INDEX idx_pending_orders_date
ON orders (order_date)
WHERE status = 'pending';
EXPLAIN ANALYZE SELECT order_id, order_date
FROM orders
WHERE status = 'pending' AND order_date > '2023-01-01';Mengindeks Ungkapan
Indeks Ungkapan (juga dikenali sebagai Indeks Berasaskan Fungsi) mengindeks hasil sesuatu fungsi atau ungkapan, bukannya nilai mentah lajur sahaja.
Indeks ini amat berguna apabila pertanyaan anda kerap menggunakan fungsi pada lajur, seperti menukar teks kepada huruf kecil untuk carian yang tidak peka huruf besar kecil.
Kehebatan Indeks Ungkapan
Indeks ungkapan menawarkan fleksibiliti yang tinggi:
- Carian Tidak Peka Huruf Besar Kecil: Indeks
LOWER(column)atauUPPER(column)untuk mempercepatkan pertanyaan sepertiWHERE LOWER(column) = 'value'. - Manipulasi Tarikh/Masa: Indeks
DATE_TRUNC('month', timestamp_column)untuk mengoptimumkan pertanyaan yang dikumpulkan atau ditapis mengikut bulan. - Pengiraan Kompleks: Indeks hasil matematik atau fungsi tersuai jika hasil tersebut menjadi sebahagian daripada syarat pertanyaan yang kerap digunakan.
Tanpa indeks ungkapan, PostgreSQL perlu mengira fungsi itu untuk setiap baris semasa imbasan, lalu menjadikannya perlahan.
Mencipta Indeks Ungkapan
Untuk mencipta indeks ungkapan, anda hanya perlu menggantikan nama lajur dalam pernyataan CREATE INDEX dengan fungsi atau ungkapan yang dikehendaki.
Peraturan pentingnya ialah ungkapan dalam klausa WHERE pertanyaan anda mestilah sepadan tepat dengan ungkapan yang digunakan dalam takrif indeks agar indeks tersebut digunakan.
CREATE INDEX index_name
ON table_name (expression);Contoh Indeks Ungkapan
Mari cipta indeks ungkapan untuk membolehkan carian alamat e-mel yang pantas dan tidak peka huruf besar kecil. Ini ialah kes penggunaan yang sangat biasa.
Perhatikan bahawa output EXPLAIN ANALYZE sepatutnya menunjukkan 'Index Scan' yang menggunakan indeks idx_lower_email baharu kita.
CREATE TABLE users (
user_id SERIAL PRIMARY KEY,
username VARCHAR(50),
email VARCHAR(100)
);
INSERT INTO users (username, email) VALUES
('Alice', 'alice@example.com'),
('Bob', 'BOB@example.com'),
('Charlie', 'Charlie@example.com'),
('David', 'david@example.com');
CREATE INDEX idx_lower_email ON users (LOWER(email));
EXPLAIN ANALYZE SELECT user_id, username
FROM users
WHERE LOWER(email) = 'bob@example.com';
-- This query would NOT use the index:
-- EXPLAIN ANALYZE SELECT user_id, username
-- FROM users
-- WHERE email = 'bob@example.com';Gunakan Pengetahuan Anda
Setelah mempelajari Indeks Separa dan Indeks Ungkapan, mari uji pemahaman anda.
Ringkasan Pelajaran
Syabas! Anda telah mempelajari dua teknik pengindeksan lanjutan yang berkuasa:
- Indeks Separa: Mengindeks hanya subset baris berdasarkan klausa
WHERE, sekali gus menjimatkan ruang dan mempercepatkan operasi tulis. - Indeks Ungkapan: Mengindeks hasil sesuatu fungsi atau ungkapan untuk mengoptimumkan pertanyaan yang menggunakan fungsi tersebut dalam syaratnya.
Dengan menggunakan indeks bersasar ini, anda boleh meningkatkan prestasi pertanyaan khusus yang kritikal dalam pangkalan data PostgreSQL anda dengan ketara.
Pelajari SQL dengan tutor kecerdasan buatan — percuma
Tulis dan jalankan kod sebenar dalam pelayar anda, dapatkan bantuan segera daripada tutor kecerdasan buatan yang tersedia 24/7, dan sambung semula dari tempat anda berhenti di web atau dalam aplikasi.
- Kursus
- 22
- Pelajaran
- 88
Soalan Lazim
Adakah pelajaran “Indeks Separa dan Indeks Ungkapan” percuma?
Ya — sebanyak 3 pelajaran dalam laluan pembelajaran Prestasi PostgreSQL & Pengoptimuman Pertanyaan, termasuk “Indeks Separa dan Indeks Ungkapan”, boleh dibaca sepenuhnya secara percuma di web ini. Selepas itu, CoddyKit PRO membuka akses kepada semua pelajaran, serta latihan interaktif dengan penyunting kod terbina dalam dan tutor kecerdasan buatan yang tersedia 24/7. Kursus Prestasi PostgreSQL & Pengoptimuman Pertanyaan merangkumi sejumlah 4 pelajaran.
Apakah yang akan saya pelajari dalam “Indeks Separa dan Indeks Ungkapan”?
Pelajari cara mencipta indeks pada subset baris atau pada hasil ungkapan untuk pengoptimuman tersasar. Anda berlatih Prestasi PostgreSQL & Pengoptimuman Pertanyaan menggunakan kod praktikal yang dijalankan terus dalam pelayar, manakala tutor kecerdasan buatan 24/7 menjawab soalan anda semasa anda mengikuti pelajaran.
Adakah saya memerlukan pengalaman untuk memulakan Prestasi PostgreSQL & Pengoptimuman Pertanyaan?
Tiada pengalaman terdahulu diperlukan. Pembelajaran Prestasi PostgreSQL & Pengoptimuman Pertanyaan di CoddyKit disusun untuk pelajar daripada peringkat pemula hingga lanjutan, jadi anda boleh bermula di sini atau dari awal dan belajar mengikut kadar anda sendiri. Ini ialah pelajaran 2 daripada 4.
Berapa lamakah pelajaran “Indeks Separa dan Indeks Ungkapan” diambil?
Kebanyakan pelajaran CoddyKit mengambil masa kira-kira 5–10 minit. Setiap pelajaran ringkas dan interaktif, jadi anda boleh membuat kemajuan secara berterusan dan menyambung tepat dari tempat anda berhenti di web atau aplikasi.
Bolehkah saya menulis dan menjalankan kod dalam pelajaran Prestasi PostgreSQL & Pengoptimuman Pertanyaan ini?
Ya. Setiap pelajaran Prestasi PostgreSQL & Pengoptimuman Pertanyaan menyertakan penyunting kod terbina dalam, jadi anda boleh menulis dan menjalankan kod sebenar terus dalam pelayar serta menerima maklum balas kecerdasan buatan serta-merta — tanpa memerlukan persediaan setempat.
Semua pelajaran dalam kursus ini
- Indeks Hash, GIN dan GiST
- Indeks Separa dan Indeks Ungkapan
- Indeks Liputan dan Imbasan Indeks Sahaja
- Indeks BRIN untuk Data Berjujukan Berskala Besar