Saya mencoba membuat tampilan dengan parameter untuk mendapatkan data secara dinamis.
(Saya tidak dapat menggunakan kondisi WHERE karena pernyataan pilih itu sendiri berubah berdasarkan parameter)
Untuk ini, saya menulis sebuah prosedur yang mengembalikan saya data yang diperlukan sebagai tipe objek Oracle.
FUNCTION get_data(p_pk_id NUMBER, p_tab_type VARCHAR2)
RETURN M_TYPE_DATA_TAB
AS
v_table_collection M_TYPE_DATA_TAB;
BEGIN
-- my sql query which will change based on the params
RETURN v_table_collection;
END;
dan saya menjalankan kueri pemilihan sebagai berikut.
SELECT * FROM TABLE(get_data(12345, 'MYTAB'));
yang memberi saya data dalam waktu kurang dari 1 detik.
untuk pernyataan pilih yang sama saya telah membuat tampilan sebagai
CREATE OR REPLACE VIEW my_view
AS SELECT * FROM TABLE(get_data(12345, 'MYTAB'));
jika saya menanyakan tampilan
SELECT * FROM my_view
dibutuhkan lebih dari 6 detik untuk mendapatkan data yang sama.
Adakah yang tahu mengapa ada perbedaan besar untuk mengkueri data yang sama.
Apakah tampilannya memerlukan waktu lebih lama dibandingkan kueri biasa?
select * from
di atas sesuatu tidak masalah. Kami perlu tahu persis apa yang membuat kasus Anda istimewa. - person Jon Heller   schedule 13.12.2013