Se ricordo bene, verrà eseguita un'intera scansione della tabella perché stai passando la colonna attraverso una funzione. MySQL eseguirà obbedientemente la funzione per ogni singola colonna, ignorando l'indice poiché Query Optimizer non può realmente conoscere i risultati della funzione.
Quello che farei è qualcosa del tipo:
SELECT * FROM transactionlist
WHERE TranDateTime BETWEEN '2008-08-17' AND '2008-08-17 23:59:59.999999';
Questo dovrebbe darti tutto quello che è successo il 17-08-2008.