你好社区#1的最高ID,的MySQL只获得该行与查询
这是我的第一篇文章在这里,所以我对我的英语不好道歉! :)
如果你不想读的一切,存在的问题都标这样。
标题是有点误导,但我不知道该如何解释以更好的方式,但详细的解释应该让你明白:
我有一个很大的日志表(50多万行的这次),游戏服务器记录游戏中发生的许多动作。我想以最有效的方式提取一些特定的日志行。
我无法更改游戏服务器的日志记录系统,如果我可以将其更改为更多的日志表以创建更紧凑的日志。 (因为该表执行的查询需要它的时间..)
现在我的问题是,我想从一个特定的玩家ID的特定类型的,而最后一个日志行获得了玩家的最后一个动作,我不知道如何以有效的方式做到这一点。 例子:
SELECT * FROM log WHERE logType = "PLAYER" AND playerID = [playerID] ORDER BY time DESC LIMIT 1
然后在网站上的输出为: 你最后的动作是[人类可读的动作和其他信息。
MySQL分析现在告诉我,结果的排序花费了大量的时间。
现在我的问题是:是否有可能只获取特定播放器ID和类型的最后一行? 我想这可以用ID完成,因为它有auto_increment。那么是否有可能获得最高ID,特定类型和特定玩家ID?
表结构: ID(INT)| logType(varchar)|时间(日期时间)| playerID(int)| positionX(int)| positionY(int)| actionID(int)| action(varchar)|提示(varchar)| ip(varchar)| itemNumber(INT)
阐释:
ID:所记录的动作的唯一id
LOGTYPE:所记录的动作的类型(例如: “PLAYER” 或 “ITEM”)
时间:动作发生
playerID时间:在X位置:玩家(或与该类型其他的id)
位X的ID游戏
位置▲:在游戏
actionID Y位置:在关系的ID的动作(例如:如果日志操作是“KILLED_BY_PLAYER”,那么是谁杀了玩家的其他玩家的玩家ID)
行动:所记录的动作(例如:KILLED_BY_PLAYER)
提示:一些有用的提示,如玩家
IP的名称:玩家的IP
itemNumber:项目的编号,如果涉及某个项目,则返回NULL
感谢您的帮助。 :)
,那么你就应该能够通过ID递减命令,限制1. – sbeliv01
这是一点点比随着时间排序更快,谢谢! –