获取具有特定值的最新数据库条目

时间:2016-05-30 19:09:19

标签: php mysql

我目前正在为朋友开发一个网站,我遇到了一个我无法解决的问题。

我被要求记录用户登录,我的方法是创建一个包含列的表:

  • 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“table?

1 个答案:

答案 0 :(得分:0)

你原来的选择是最好的选择:

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 );

这将真正提高查询性能。