MySQL merekomendasikan penggunaan indeks untuk berbagai alasan termasuk penghapusan baris di antara kondisi:http://dev.mysql.com/doc/refman/5.0/en/mysql-indexes.html
Ini menjadikan kolom datetime Anda kandidat yang sangat baik untuk indeks jika Anda akan sering menggunakannya dalam kondisi dalam kueri. Jika satu-satunya syarat Anda adalah BETWEEN NOW() AND DATE_ADD(NOW(), INTERVAL 30 DAY)
dan Anda tidak memiliki indeks lain dalam kondisi tersebut, MySQL harus melakukan scan tabel lengkap pada setiap kueri. Saya tidak yakin berapa banyak baris yang dihasilkan dalam 30 hari, tetapi selama kurang dari sekitar 1/3 dari total baris, akan lebih efisien untuk menggunakan indeks pada kolom.
Pertanyaan Anda tentang membuat database yang efisien sangat luas. Saya akan mengatakan untuk memastikan bahwa itu dinormalisasi dan semua kolom yang sesuai diindeks (yaitu yang digunakan dalam gabungan dan klausa di mana).