MySQL doporučuje používat indexy z různých důvodů, včetně odstranění řádků mezi podmínkami:http://dev.mysql.com/doc/refman/5.0/en/mysql-indexes.html
Díky tomu je váš sloupec datetime vynikajícím kandidátem na index, pokud jej budete používat v podmínkách často v dotazech. Pokud je vaší jedinou podmínkou BETWEEN NOW() AND DATE_ADD(NOW(), INTERVAL 30 DAY)
a nemáte v podmínce žádný jiný index, MySQL bude muset provést úplnou kontrolu tabulky na každý dotaz. Nejsem si jistý, kolik řádků se vygeneruje za 30 dní, ale pokud je to méně než 1/3 celkového počtu řádků, bude efektivnější použít index na sloupec.
Vaše otázka o vytvoření efektivní databáze je velmi široká. Chtěl bych se jen ujistit, že je normalizován a všechny příslušné sloupce jsou indexovány (tj. ty, které se používají ve spojeních a klauzulích Where).