MySQL препоръчва използването на индекси по различни причини, включително елиминиране на редове между условия:http://dev.mysql.com/doc/refman/5.0/en/mysql-indexes.html
Това прави вашата колона дата и час отличен кандидат за индекс, ако ще я използвате при условия често в заявки. Ако единственото ви условие е BETWEEN NOW() AND DATE_ADD(NOW(), INTERVAL 30 DAY)
и нямате друг индекс в условието, MySQL ще трябва да направи пълно сканиране на таблицата при всяко запитване. Не съм сигурен колко реда се генерират за 30 дни, но стига да е по-малко от около 1/3 от общия брой редове, ще бъде по-ефективно да се използва индекс за колоната.
Въпросът ви относно създаването на ефективна база данни е много широк. Бих казал просто да се уверите, че е нормализиран и всички подходящи колони са индексирани (т.е. тези, използвани в съединения и клаузи where).