linq 后臺代碼:主要含義: 就是先根據(jù)PersonID分組查詢,去掉重復(fù)的PersonID。 然后在這個(gè)結(jié)果集里面。根據(jù)PersonID,AlarmStatus升序,AlarmRecordID降序,獲取最新的AlarmRecordID。 然后兩個(gè)合并為結(jié)果集。轉(zhuǎn)為mysql 的SQL語句為 SELECT t.PersonID,(SELECT AlarmRecordID FROM AlarmRecord WHERE OrganizationID = 4 AND IsDeleted = 0 AND PersonID = t.PersonID ORDER BY AlarmStatus ASC,AlarmRecordID DESC LIMIT 1) AS AlarmRecordIDFROM AlarmRecord t WHERE t.OrganizationID = 4 AND t.IsDeleted = 0 GROUP BY t.PersonID我想優(yōu)化標(biāo)記為紅色部分的SQL,請問怎么優(yōu)化?
1 回答

繁華開滿天機(jī)
TA貢獻(xiàn)1816條經(jīng)驗(yàn) 獲得超4個(gè)贊
首先修改sql :
SELECT t.PersonID,(SELECT AlarmRecordID FROM AlarmRecord WHERE PersonID = t.PersonID ORDER BY AlarmStatus ASC,AlarmRecordID DESC LIMIT 1) AS AlarmRecordIDFROM AlarmRecord t WHERE t.OrganizationID = 4 AND t.IsDeleted = 0 GROUP BY t.PersonID
通過創(chuàng)建索引來優(yōu)化
CREATE INDEX `idx_AlarmRecord_PersonID` ON `AlarmRecord`(`PersonID`, `AlarmStatus`);
通過創(chuàng)建索引,查詢會快很多。如果不通過創(chuàng)建索引,有什么好的方法嗎?
添加回答
舉報(bào)
0/150
提交
取消