Не уверен, почему вы говорите, что выбор даты и времени был бы плохой идеей (вы против составных ключей?)
Большая проблема для вас в том, что время не хранит миллисекунды. Смотрите эту ошибку для получения дополнительной информации об этом: http://bugs.mysql.com/bug.php?id=8523
Кроме того, кажется, что в ключе, идентифицирующем акции, например, тикер, чего-то не хватает. Поскольку тикер может меняться со временем, было бы неплохо ввести для него суррогат, такой как StockID. Вы могли бы сделать это в таблице под названием Stock или аналогичной.
Тогда для вашей таблицы торговли я бы предложил использовать StockID, Date and Time (но хранить время не в типе данных TIME, чтобы вы могли хранить миллисекунды. Задайте другой вопрос, если вам нужна помощь в этом).
Порядок ключей в ПК важен как для хранения, так и для восстановления. Для поиска вы хотите поставить наиболее селективные ключи для вашего запроса в первую очередь. Поэтому, если вы стремитесь получить доступ ко всем данным для акции одновременно (или для набора акций), сначала укажите StockID, чтобы с помощью индекса можно было быстро их найти. Если вы стремитесь получить доступ ко всем данным за определенный интервал, сначала укажите «Дата», а затем «Время».
Что касается хранилища, то лучше добавить его, так что сначала стоит указать дату и время.
Если вы хотите получить доступ в основном в диапазонах дат, но иногда по Stock, добавьте вторичный индекс в StockID.