медленный запрос MySQL, который должен выполняться сотни тысяч раз в час - PullRequest
2 голосов
/ 06 января 2012

В моей базе данных mysql есть таблица с несколькими сотнями тысяч строк. Каждая строка имеет (среди прочих данных) имя пользователя и отметку времени.

Мне нужно получить запись с самой последней отметкой времени для данного пользователя.

Текущий запрос грубой силы:

SELECT * FROM tableName WHERE `user_name`="The user name" AND datetime_sent = (SELECT MAX(`datetime_sent`) FROM tableName WHERE `user_name`="The user name");

Таблица имеет индекс по user_name и datetime_sent.

Как лучше всего улучшить этот запрос? Я должен выполнить тысячи этих запросов одновременно. Кажется, что каждый запрос занимает от 1 до 4 миллисекунд, и я подозреваю, что есть гораздо более эффективный способ достижения того же результата.

1 Ответ

2 голосов
/ 06 января 2012
select * from tableName
where userName = 'username'
order by datetime_sent desc
limit 1
...