亚洲精品久久久中文字幕-亚洲精品久久片久久-亚洲精品久久青草-亚洲精品久久婷婷爱久久婷婷-亚洲精品久久午夜香蕉

您的位置:首頁技術文章
文章詳情頁

mysql - 一個sql的問題

瀏覽:95日期:2022-06-22 08:31:11

問題描述

stat表 字段 uid,act,time我想取出每個uid最近的一個act我現(xiàn)在的sql:

select * from (select * from stat order by uid,time desc) a group by uid

這個表數(shù)據(jù)量比較大,查起來有點慢,有沒有更好的辦法

甚至這個:

select act,count(*) num from (select * from (select * from stat order by uid,time desc) a group by uid) b group by act

表:

CREATE TABLE `stat` ( `uid` varchar(40) COLLATE utf8_unicode_ci NOT NULL, `act` bigint(20) NOT NULL, `time` bigint(20) DEFAULT NULL, PRIMARY KEY (`uid`,`act`), KEY `index_time` (`time`) USING BTREE, KEY `index_act` (`act`) USING BTREE) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci

問題解答

回答1:

先說一下我的看法吧,如果有錯誤的地方,歡迎指正。首先,我覺得題主的SQL語句是錯的,看起來結果正確只不過是寄希望于數(shù)據(jù)庫在執(zhí)行group by的實現(xiàn)機制。比如說如果把排序順序變一下結果就錯了。在使用group by之后,題主能夠查詢的字段要么是在聚集函數(shù)里面,要么就是group by的字段,類似于’select * from a group by uid’這樣的寫法不規(guī)范,因為數(shù)據(jù)庫在按照uid分組之后,會隨機選取一組act和time的字段值。題主的SQL看起來工作正常應該是在排序之后,數(shù)據(jù)庫默認選取了排序最靠前的。我認為正確的SQL應該是這樣的:

select stat.* from stat ,(select uid,max(time) as time from stat group by uid) tmp where stat.uid=tmp.uid and stat.time=tmp.time;

先分組查詢出每個人執(zhí)行時間最晚的時間,然后根據(jù)uid和time去獲取完整的操作信息。如果題主的數(shù)據(jù)庫對uid加了索引的話,這個 SQL的查詢效率應該還在可以接受的程度。一點個人看法。

我在原來的基礎之上,做了一丟丟修改,在本地測試性能有微小的提升,我本地是三萬組測試數(shù)據(jù),題主可以試一下:

select stat.* from stat ,(select uid,max(time) as time from stat group by uid order by null) tmp where stat.time=tmp.time and stat.uid=tmp.uid;回答2:

給查詢條件的那幾個列建立索引試試,B數(shù)索引呀,B+數(shù)索引呀等等

具體怎么建立你可以去百度搜一下

回答3:

這個語句為什么要嵌套子查詢,一條語句不行嗎,不是很清楚邏輯,,,不過正常情況下我都是用explain打印一下查詢信息

回答4:

一條group by就足夠了為什么要寫兩層

相關文章:
主站蜘蛛池模板: 在线中文字幕视频 | 一级毛片完整免费版 | 日韩在线观看精品 | 日韩1024| 国产精品色婷婷在线观看 | 成人午夜精品网站在线观看 | 她也啪97在线视频 | 国产在线麻豆一区二区 | 色花堂的网站地址 | 久久久精品一级二级三级 | 99久久精品免费看国产免费 | 黄片毛片免费观看 | 国产日本欧美亚洲精品视 | 草逼com| 亚洲黄色片在线观看 | 亚洲综合九九 | 黄色不卡视频 | 国产精品一级视频 | 国产高清国内精品福利99久久 | 91桃子| 视频一区二区三区免费观看 | 精品一区二区三区视频在线观看 | 九九精品视频在线观看 | 妞干网在线视频 | 91视频麻豆 | 国内精品网站 | 国产牛仔裤系列在线观看 | 曰本变态bdsm色虐七v | 亚洲第一毛片 | xxxxxx国产精品视频 | 一级一级 a爱片免费视频 | 国产亚洲婷婷香蕉久久精品 | 成人在线免费观看视频 | 亚洲日韩视频免费观看 | 久久久久久久91精品免费观看 | 国产成人在线视频播放 | 精品午夜视频 | 香蕉久久高清国产精品免费 | 国产成人18| 日美毛片 | 在线免费观看一区二区三区 |