2

私の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ミリ秒かかるようで、同じ結果を得るにははるかに効率的な方法があると思います。

4

1 に答える 1

2
select * from tableName
where userName = 'username'
order by datetime_sent desc
limit 1
于 2012-01-06T07:25:38.173 に答える