Lajur maya untuk menyimpan pertanyaan
PostgreSQL menyediakan banyak cara untuk menggabungkan pengiraan atau subkueri kompleks ke dalam skema jadual. Satu pendekatan adalah untuk mencipta pandangan, yang menyediakan perwakilan maya data yang boleh ditanya seperti jadual biasa. Walau bagaimanapun, paparan tidak disimpan dalam pangkalan data dan dikira semula untuk setiap pertanyaan, yang mungkin mengurangkan kecekapan untuk pertanyaan kompleks yang kerap digunakan.
Pendekatan lain ialah menggunakan lajur yang dikira tersimpan, yang membolehkan anda mentakrifkan nilai lajur berdasarkan ungkapan yang mengandungi lajur lain atau sumber data luaran. Lajur pengiraan yang disimpan disimpan secara fizikal dalam jadual dan nilainya dikira dan dikemas kini apabila data asas berubah.
Untuk menggunakan lajur yang dikira disimpan untuk menyimpan subkueri sebagai lajur pseudo, anda boleh mencipta fungsi yang membungkus subkueri dan merujuknya dalam takrifan lajur yang dikira. Berikut ialah contoh cara melakukan ini:
<code class="language-sql">CREATE FUNCTION col3(tbl_a) RETURNS int8 LANGUAGE SQL STABLE AS $$ SELECT sum(colx) FROM tbl_b b WHERE b.a_id = .a_id $$; ALTER TABLE tbl_a ADD COLUMN col3 INT8 STORED AS col3(tbl_a);</code>
Kaedah ini membolehkan anda menanyakan lajur terbitan seperti lajur biasa:
<code class="language-sql">SELECT a_id, col1, col2, col3 FROM tbl_a;</code>
Berbanding dengan paparan, kelebihan menggunakan lajur yang dikira disimpan ialah nilai lajur disimpan secara fizikal dan tidak perlu dikira semula untuk setiap pertanyaan, sekali gus meningkatkan prestasi pertanyaan kompleks yang kerap digunakan. Selain itu, lajur pengiraan yang disimpan disepadukan sepenuhnya ke dalam skema jadual, membolehkan ia digunakan untuk indeks, kekangan kunci asing dan operasi pangkalan data lain.
Atas ialah kandungan terperinci Bagaimanakah PostgreSQL Stored Computed Lajur Boleh Meningkatkan Prestasi untuk Pertanyaan Kompleks?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!