Saya sedang menyiapkan tabel yang mungkin memiliki lebih dari 70 kolom. Saya sekarang berpikir untuk membaginya karena beberapa data di kolom tidak akan diperlukan setiap kali tabel diakses. Kemudian lagi, jika saya melakukan ini, saya harus menggunakan gabungan.
Pada titik manakah, jika ada, kolom dianggap terlalu banyak?
Jawaban:
Itu dianggap terlalu banyak setelah di atas batas maksimum yang didukung oleh database .
Fakta bahwa Anda tidak perlu setiap kolom dikembalikan oleh setiap kueri adalah hal yang normal; itulah mengapa pernyataan SELECT memungkinkan Anda secara eksplisit memberi nama kolom yang Anda butuhkan.
Sebagai aturan umum, struktur tabel Anda harus mencerminkan model domain Anda; Jika Anda benar-benar memiliki 70 (100, what have you) atribut milik entitas yang sama, tidak ada alasan untuk memisahkannya menjadi beberapa tabel.
sumber
select count(*) from votes
setiap kali atau menurut Anda mungkin itu didenormalisasi? Apakah itu membuat database SO buruk dan Jeff Atwood gila?Ada beberapa manfaat untuk memisahkan tabel menjadi beberapa dengan kolom yang lebih sedikit, yang juga disebut Partisi Vertikal . Berikut ini beberapa di antaranya:
Jika Anda memiliki tabel dengan banyak baris, memodifikasi indeks dapat memakan waktu lama, karena MySQL perlu membangun kembali semua indeks dalam tabel. Memiliki indeks yang terpecah menjadi beberapa tabel dapat membuatnya lebih cepat.
Bergantung pada kueri dan jenis kolom Anda, MySQL dapat menulis tabel sementara (digunakan dalam kueri pemilihan yang lebih kompleks) ke disk. Ini buruk, karena disk i / o bisa menjadi leher botol besar. Ini terjadi jika Anda memiliki data biner (teks atau blob) dalam kueri.
Tabel yang lebih lebar dapat menyebabkan kinerja kueri menjadi lebih lambat.
Jangan melakukan pengoptimalan sebelum waktunya, tetapi dalam beberapa kasus, Anda bisa mendapatkan peningkatan dari tabel yang lebih sempit.
sumber
Terlalu banyak jika melanggar aturan normalisasi. Sangat sulit untuk mendapatkan banyak kolom jika Anda menormalkan database Anda. Rancang database Anda untuk memodelkan masalah, bukan di sekitar aturan atau ide buatan tentang pengoptimalan untuk platform db tertentu.
Terapkan aturan berikut ke tabel lebar dan Anda kemungkinan akan memiliki kolom yang jauh lebih sedikit dalam satu tabel.
Berikut ini tautan untuk membantu Anda.
sumber
It is pretty hard to get that many columns if you are normalizing your database.
Tidak sesulit kelihatannya.Itu bukan masalah kecuali semua atribut dimiliki oleh entitas yang sama dan tidak bergantung satu sama lain. Untuk membuat hidup lebih mudah, Anda dapat memiliki satu kolom teks dengan array JSON yang disimpan di dalamnya. Tentunya, jika Anda tidak memiliki masalah dalam mendapatkan semua atribut setiap saat. Meskipun ini sepenuhnya akan menggagalkan tujuan penyimpanannya dalam RDBMS dan akan sangat mempersulit setiap transaksi database. Jadi pendekatan ini tidak disarankan untuk diikuti di seluruh database.
sumber
Memiliki terlalu banyak kolom dalam tabel yang sama juga dapat menyebabkan masalah besar dalam replikasi. Anda harus tahu bahwa perubahan yang terjadi di master akan mereplikasi ke slave .. misalnya, jika Anda memperbarui satu bidang dalam tabel, seluruh baris akan menjadi w
sumber