你好社區#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
這是一點點比隨着時間排序更快,謝謝! –