優化 mysql查詢最近一條記錄

2022-07-05 12:18:10 字數 1156 閱讀 4705

select * from

a where create_time<="

2017-03-29 19:30:36

"order by create_time desc

limit

1

select * from

(

select * from

a

where create_time<="

2017-03-29 19:30:36

"order by create_time desc

) group by user_id

後來發現使用group by 可以根據group by 的引數列分組,但返回的結果只有一條,仔細觀察發現group by是將分組後的第一條記錄返回。時間在查詢後預設是順序排列,因此需要先將時間倒序排列,方可取出距離當前最近一條。

這樣查詢實際上還是進行了兩次查詢,雖然時間上相比第乙個方法有了質的飛躍,但是還可以進一步優化。

select *,max(create_time) from

awhere create_time<="

2017-03-29 19:30:36

"group by user_id

這句可以理解為將結果集根據user_id分組,每組取time最大一條記錄。這樣就很好的實現了批量查詢最近記錄,並且僅僅需要遍歷一次表,即使在資料量巨大的情況下也可以在很短的時間查出結果。

現在有一張資產裝置表:base_assets_turn 

查詢資產的最新保管人

注:假設資產編號   assets_id=254

select * from

base_assets_turn

where assets_id = 254

order by create_time desc

limit

1

select * from ( select * from

base_assets_turn

where assets_id = 254

order by create_time desc) tt group by tt.assets_id;

by: 乙隻阿木木

LINQ SQL分組取最近一條記錄

最近專案有乙個需求,從訂單表查詢出每個客戶最近一條訂單記錄。資料庫表結構如下圖 1執行結果,已經按照客戶分組,並且按時間順序生成序號。對應linq 為 var table contex.gettable tolist var data table.orderbydescending a a.orde...

優化mysql查詢最新一條資料

title 優化mysql查詢最新一條資料 date 2019 07 24 11 23 21 categories 今天寫web時,發現有個請求一直沒有響應,用谷歌f12看了一下,請求出現了乙個問題。我第一反應是網路延遲,又試了幾次,還是這個問題,便看了一下後台控制台也沒報錯,便想是不是sql查詢時...

mysql 查詢表中最後一條記錄

查詢全部的記錄 select from test limit 查第一條記錄 select from test limit limit 1 查前面兩條記錄 select from test limit limit 0,2 查第二和第三條記錄 select from test limit limit 1...