Oke, saya melihat dilema Anda, dan dengan (mungkin berumur pendek) tidak adanya ahli database, saya akan memberikan pendapat saya.
Demi kewarasan, pisahkan data Anda. Katakanlah Anda menyimpan info tentang orang-orang. Anda tidak perlu 200 kolom dalam 1 tabel. Anda harus membaginya dan memiliki beberapa kolom dalam banyak tabel. misalnya
tblGeneralCharacteristics:
- colEyeColor
- colHairColor
- colHeight
- colWeight
tblInterests:
- colFaveColor
- colFaveSport
tblRelationships
- colMother
- colFather
- colBrother
- colSister
Cara ini jauh lebih baik. Secara komputasi saya ragu itu sangat berarti. Jelas dengan setiap kueri Anda mendapatkan lebih sedikit data, jadi untuk beberapa laporan (di mana Anda mungkin tidak perlu mendapatkan semua data, atau menelusuri semua data) mungkin lebih cepat (walaupun jika Anda mengindeks database dengan benar maka seharusnya tidak menjadi masalah).
Ke edisi berikutnya. Bahwa dari jumlah catatan dalam database. Jika 10.000 mulai menjadi sedikit besar, saatnya untuk memulai caching.
Sekarang, sejauh yang saya ketahui tidak ada cara yang benar atau salah untuk menyimpan data. Apa yang Anda butuhkan adalah apa yang Anda butuhkan. Jadi misalnya, dalam pertanyaan Anda, Anda menyebutkan mendapatkan tinggi rata-rata untuk berat untuk input catatan antara Jan &Maret 2012. Nah ... Anda bisa menulis skrip cron yang menghitung tinggi rata-rata untuk berat untuk semua input catatan bulan itu dan menyimpannya di meja yang berbeda di suatu tempat. Kemudian ketika Anda datang untuk membuat laporan Anda, Anda hanya perlu mendapatkan nilai untuk Jan, Feb &Maret dan rata-ratanya... itu jauh lebih mudah. Alih-alih melakukan kueri komputasi pada ribuan baris yang berpotensi, Anda melakukan kueri cron (tidak peduli berapa lama waktu yang dibutuhkan) pada beberapa ratus baris, lalu laporan aktual hanya menanyakan 3 baris.
Trik lainnya adalah, semakin banyak perhitungan yang dapat Anda lakukan dalam SQL, semakin baik. Jika Anda ingin rata-rata bidang/catatan, atau total sesuatu, kirimkan dengan kueri SQL Anda. Server SQL akan melakukan perhitungan dan mengembalikan hasilnya, daripada mengembalikan Anda sejumlah besar data untuk disaring. Saya tahu ini tidak selalu mudah/berguna, tetapi semakin Anda bisa mendapatkan SQL, semakin baik.
Semoga ini membantu. Seperti yang saya katakan, saya yakin seorang ahli database ingin memberi Anda beberapa saran yang lebih mendalam. :)