Sinonim publik memiliki tujuan yang sangat spesifik; mereka memungkinkan objek untuk direferensikan oleh setiap pengguna - dengan asumsi mereka memiliki hak istimewa yang sesuai. Jika suatu saat nanti Anda mungkin ingin mengubah cara pengguna tertentu melihat suatu objek, maka sinonim publik bukanlah cara yang tepat.
Mereka juga menggunakan nama objek tertentu untuk seluruh database. Namun, fakta bahwa sinonim publik ada tidak menghalangi Anda untuk membuat objek dengan nama yang sama. Ini bisa sangat membingungkan.
Misalnya, anggap Anda memiliki prosedur test
dan skema emp
. Mencoba menjalankan emp.test
tidak akan berfungsi karena Anda sudah memiliki sinonim publik emp
di meja .
Tom Kyte , tampaknya telah menulis jumlah artikel tentang ini.
Pada aspek kinerja, mereka tampaknya menyarankan bahwa sinonim publik daripada sinonim pribadi akan menghasilkan sedikit penurunan kinerja . Namun, menggunakan sinonim alih-alih tanpa sinonim juga akan menghasilkan sedikit penurunan kinerja. Ini menunjukkan bahwa jika setiap komputer terakhir sangat berharga Anda tidak boleh menggunakan sinonim sama sekali.
Jika digabungkan, saya pikir ini berarti Anda harus menghindari sinonim publik jika memungkinkan. Jika Anda membutuhkan satu maka tentu saja gunakan satu, mereka ada karena suatu alasan, tetapi jika Anda tidak melakukannya, apa gunanya memilikinya? scott.emp
konstruksinya jelas, menunjukkan dengan tepat skema dan objek apa yang Anda rujuk tanpa kemungkinan salah tafsir, baik oleh Anda sendiri atau orang lain yang baru masuk ke database dan kode.
Titik cepat. Anda tidak secara eksplisit mengatakannya tetapi kata-kata dari pertanyaan Anda tampaknya menunjukkan bahwa Anda membuat skema untuk setiap pengguna. Ini sepertinya akan sangat membingungkan...