2016-05-30 12 views
0

私は現在、友人のためのウェブサイトを開発しており、私は満足して解決できない問題に遭遇しました。特定の値を持つ最新のデータベースエントリを取得します

  • ID
  • のuser_id
  • login_time
  • login_ip

私は、ユーザのログインをログに記録するように頼まれた

、そして私のアプローチは、列を保持するテーブルを作成すること、でした

テーブルが次のように見える場合:

id - user_id - login_time --------------- login_ip

1 ----- 1 --------- 2016-05-29 17 :21:47 --- 11.0.0.1
2 ---- 1 --------- 2016-05-29 17:22:12 --- 11.0.0.1
3 --- - 2 --------- 2016-05-29 17:23:49 --- 11.0.0.1
4 ----- 3 --------- 2016-05- 29 17:25:57 --- 11.0.0.1
5 ---- 2 --------- 2016-05-29 17:28:34 --- 11.0.0.1
6 ----- 1 --------- 2016-05-29 17:30:35 --- 11.0.0.1
7 ----- 3 --------- 2016-05-29 17:31:28 --- 11.0.0.1
8 ---- 3 --------- 2016-05-29 17:31:58 --- 11.0.0.1
9 ----- 2 --------- - 2016-05-29 17:44:29 --- 11.0.0.1

行6のデータを最も効率的に取得するにはどうすればよいですか? "user_id = 1"のユーザが最後にログインしたので、mysqlに "user_id = 1"の最新エントリを取得する方法がありますか?
私の現在のアプローチは、股関節のデータベースが小さい場合の問題ではありません

("SELECT * FROM login_tracking WHERE user_id = 1 ORDER BY id DESC LIMIT 1") 

だろうが、それが大きく成長している場合、それは私の目には非効率的になります。

「login_time」と「login_ip」をusersテーブルに追加してそこから情報を取得する方が良いでしょうか?ユーザーが最後にログインして同じログイン情報を"login_tracking"テーブル?

select * from login_tracking where user_id = 1 order by id desc limit 1 

しかし、両方の列のidとUSER_IDにインデックスを作成することに注意してください。:

create index two_cokumn_index on login_tracking (id , user_id); 

これは本当にクエリのパフォーマンスが向上します

+0

* "行6のデータを最も効率的に取得するにはどうすればいいですか?" * 'WHERE user_id = 1 and id = 6'です。 –

+0

* "mysqlに" user_id = 1 "という最新のエントリを取得する方法があります。 - 最近の日付と時刻で注文することができます。 –

+0

@ Fred-ii-この場合はIです行のIDを知っていますが、動的に取得したいのですが、すべての値を取得して順序付けをしているのは、私の目には効率的ではないのでやっていないことです。手動で最初に私が必要としないものをすべてカットすることなく。 –

答えて

0

You'reのオリジナルの選択は最良の選択肢です。

+0

私は前にそれらを扱ったことがないので、私はマルチカラムインデックスを調べました。私が見つけたものから、これが最もうまくいく解決策です。ありがとう。 ちょっとした質問と同じように、そのトピックに関する詳しい情報を得るための良いチュートリアル/リソースがありますか? –

+0

リチャードは、データベース(mysql、oracle、postgresなど)のインデックスを扱うことは、パフォーマンスの監視と改善の重要な側面です。私はそれについて読んで私の人生で多くの時間を過ごす。だから、単純ではないと思うが、それほど複雑ではない。使用しているストレージエンジンとインデックスの種類を理解することが重要です。 –

+0

Mysqlのドキュメントを見てください。そこには良い情報がたくさんあります。 https://dev.mysql.com/doc/refman/5.5/en/optimization-indexes.html –

関連する問題