Apa yang Anda geluti adalah pembagian vertikal. Ini adalah teknik desain basis data fisik untuk meningkatkan kinerja. Seperti halnya teknik desain database fisik, penerapannya tergantung pada permintaan spesifik yang Anda coba optimalkan dan apakah teknik ini akan mengoptimalkannya. Dari sudut pandang logis, jika bidang-bidang baru ini bergantung pada kunci kandidat untuk entitas Anda, maka itu adalah fakta tentang miliknya. Pertama, Anda harus memastikan bahwa Anda sepenuhnya memahami ketergantungan fungsional bidang baru ini pada kunci kandidat Anda untuk memverifikasi bahwa itu benar-benar fakta tentang tampilan halaman harian. Jika ya, memutuskan untuk mempartisi mereka ke dalam tabel lain adalah pengoptimalan kinerja yang seharusnya hanya dilakukan jika mencapai sasaran kinerja Anda.
Secara umum, partisi vertikal berguna jika Anda akan kueri kolom-kolom baru ini jarang dan berbeda dari kolom lain di tabel asli. Dengan menempatkan kolom-kolom itu di tabel lain yang membagikan PK yang sama dengan tabel yang ada, Anda dapat menanyakannya secara langsung ketika Anda menginginkan kolom-kolom baru tersebut dan mendapatkan hasil yang jauh lebih besar karena Anda akan memiliki lebih banyak baris per halaman pada disk untuk tabel baru ini. karena semua kolom dari tabel asli tidak akan duduk di baris itu. Namun, jika Anda akan selalu menanyakan kolom ini bersama dengan kolom di tabel asli maka partisi vertikal tidak akan masuk akal karena Anda harus selalu bergabung dengan luar untuk mendapatkannya. Halaman dari tabel pada disk masuk ke kumpulan buffer dari DBMS secara independen, tidak pernah bergabung sebelumnya, dan agar bergabung harus terjadi dengan setiap eksekusi permintaan bahkan jika data disematkan dalam kumpulan buffer. Dalam skenario ini membuat mereka kolom NULLABLE pada tabel asli akan memungkinkan mesin penyimpanan DBMS untuk menyimpannya secara efisien ketika NULL dan menghilangkan kebutuhan untuk bergabung pada pengambilan.
Bagi saya sepertinya case use Anda adalah yang terakhir dan menambahkannya sebagai NULLABLE ke tabel asli Anda adalah caranya. Tetapi seperti semua hal lain dalam desain basis data, itu tergantung, dan untuk membuat keputusan yang tepat, Anda perlu mengetahui beban kerja yang diharapkan dan tergantung pada pilihan mana. Salah satu contoh kasus penggunaan yang tepat untuk partisi vertikal adalah panel pencarian orang, di mana aplikasi Anda memiliki beberapa informasi yang sangat jarang tentang seseorang yang mungkin ingin dicari seseorang tetapi jarang dilakukan. Jika Anda memasukkan informasi itu ke tabel yang berbeda, Anda memiliki beberapa opsi kinerja yang bagus. Anda dapat menulis pencarian sehingga Anda memiliki 2 kueri - yang menggunakan informasi utama yang selalu diisi untuk mencari (seperti nama belakang atau ssn) saja, dan yang luar bergabung dengan informasi yang sangat jarang hanya ketika diminta untuk pencarian. Atau Anda dapat memanfaatkan pengoptimal DBMS jika cukup cerdas untuk mengenali set variabel host tertentu yang tidak perlu digabung dan tidak akan dijalankan, sehingga Anda hanya perlu membuat 1 kueri.
Platform DBMS apa yang Anda gunakan? Cara platform menangani penyimpanan kolom NULL, mengoptimalkan kueri Anda, serta ketersediaan dukungan kolom jarang (SQL Server memilikinya) akan memengaruhi keputusan. Pada akhirnya saya akan merekomendasikan mencoba kedua desain di lingkungan pengujian dengan data ukuran produksi dan beban kerja dan melihat mana yang lebih baik mencapai tujuan kinerja Anda.