MySQLæ ¢æ¥è¯¢ä¼åææ³æ»ç»
å¾®ä¿¡å ¬ä¼å·ï¼molashaonian
1.æ ¢æ¥ä¸
-
ç´¢å¼æ åµ
PRIMARY KEY (id),
INDEXidx_status_ct(status,created_time) -
ä¼åå
SELECT *
FROM rop
WHERE `status` IN (0, 3)
AND is_delete = 0
LIMIT 112000, 1000
æ¾ç¶ï¼è¿æ¡SQLä¹æä»¥æ ¢æ¯å 为å页æ¥è¯¢ï¼å°åé¢éè¦è·³è¿çæ°æ®å¤ªå¤äºï¼èä¸ status ç¶æçåºåçä¹ä¸æ¯å¾é«ï¼æä»¥è¶å¾åæ¥è¯¢å°±è¶æ ¢
-
ä¼åå
SELECT *
FROM rop
WHERE `status` IN (0, 3)
AND is_delete = 0
AND created_time >= '2020-05-13 18:31:35.0'
AND id > 17735072
LIMIT 1000
ä¼åç¹ï¼
a. 对äºè¿ç§åé¡µæ ¢æ¥ï¼ä¸è¬éåå页å¾å°çæå䏿¡æ°æ®çèªå¢IDä½ä¸ºæ¥è¯¢æ¡ä»¶æ¥æ¿ä»£ offsetï¼é¿å è·³è¿æ°æ®ï¼
b. åæ¶æ¶é´èå´çæ¯è¾ï¼å建æ¶é´ created_time çåäº èªå¢IDï¼è rop 表å好æèåç´¢å¼ (status,created_time) ï¼æä»¥æ¤å¤è¿å¢å created_time ä½ä¸ºæ¥è¯¢æ¡ä»¶ï¼ä½¿å¾ id åæ®µä¸éè¦ ç´¢å¼ä¸æ¨ å°±è½è¿æ»¤åºæ¥ï¼ç´æ¥éè¿èåç´¢å¼è¿æ»¤åºéè¦åè¡¨çæ°æ®ï¼å¤§å¤§åå°äºåè¡¨çæ°æ®é
2.æ ¢æ¥äº
-
ç´¢å¼æ åµ
PRIMARY KEY (id),
INDEXidx_pc_code_status(pc_code,status) ,
INDEXidx_last_update_time(last_update_time) -
åæ®µå¤æ³¨
is_done æ¯å¦å®æ 1 æ¯ 0 å¦ -
ä¼åå
SELECT *
FROM apc
WHERE pc_code = 'H11067'
AND is_delete = 0
AND is_done = 0
AND STATUS <> 64
ä»ç´¢å¼ï¼SQLæ¥çè¿æ¡è¯å¥åªè½èµ°å°èåç´¢å¼ idx_pc_code_status ç第ä¸èç¹ç´¢å¼ï¼status èå´æ¥è¯¢ç´¢å¼å¤±æ
-
ä¼åå
SELECT MAX(id)
FROM apc
WHERE last_update_time = '2020-05-13 18:31:35';
SELECT *
FROM apc
WHERE pc_code = 'H11067'
AND is_delete = 0
AND is_done = 0
AND status IN (65, 71, 73, 72, 74, 76, 75, 81, 82, 85, 86, 87, 88, 89, 90, 91)
AND id > 19331461
ä¼åç¹ï¼
a. é¦å ä¸å¡åºæ¯åä¸ä¸ª pc_code ä¸ is_done 为é宿ç è¯å®æ¯åªæä¸ä¸ªï¼æä»¥å éè¿ Redis ç¼åä¸ä¸æ¬¡è¯¥ pc_code 宿çæå last_update_timeï¼idï¼å½ç¶ç¬¬ä¸æ¬¡æ¥è¯¢è¯å®è¿æ²¡ç¼åï¼æä»¥ id ä½ä¸ºæ¥è¯¢æ¡ä»¶å¾å å¤ç©ºï¼ä½æ¯ä¹åçæ¥è¯¢å°±å¯ä»¥è·å¾ä¸ä¸æ¬¡ç idï¼å¹¶ä¸æææ°æ¥è¯¢è·åç id æ´æ°å°ç¼åä¸ï¼è¿éè¿é注æ MAX(id) å¯è½ä¸º nullï¼è¿éå¯ä»¥éè¯å¤å 个æ¶é´èç¹å°±å¯ä»¥äºï¼ç¬¬ä¸ä¸ªSQLèµ°ç´¢å¼ (last_update_time) ä¸ç¨å表ï¼
b. status <> 64ï¼ä¸çäº 64ï¼ä½æ¯èå´æ¥è¯¢ç´¢å¼å¤±æï¼æä»¥å°±æ¿æ¢æ IN (64以å¤çå ¶ä»ç¶æ)ï¼å ä¸ id è¿æ ·å°±å¯ä»¥æç´¢å¼ (pc_code,status) ç¨å°æè´
3.æ ¢æ¥ä¸
-
ç´¢å¼æ åµ
PRIMARY KEY (id),
INDEXidx_pc_code(pc_code) -
ä¼åå
SELECT *
FROM apc
WHERE pc_code = 'H19941'
AND is_delete = 0
ORDER BY create_time DESC
LIMIT 1
该SQLèµ°å°ç´¢å¼ idx_pc_codeï¼ç±äºè¿è¡äº ORDER BY create_timeï¼å¯¼è´äºæä»¶æåº Using filesort
-
ä¼åå
SELECT MAX(id)
FROM apc
WHERE (pc_code = 'H19941' AND is_delete = 0);
SELECT *
FROM apc
WHERE id = 19448001
ä¼åç¹ï¼a. å æ ¹æ®æ¡ä»¶æ¥è¯¢åº MAX(id)ï¼åæ ¹æ® id æ¥è¯¢æ°æ®ï¼è§é¿æä»¶æåº
4.æ ¢æ¥å
-
ç´¢å¼æ åµ
PRIMARY KEY (id),
KEYidx_pno(pno),
KEYidx_create_time(create_time),
KEYidx_aid(aid),
KEYidx_flo(flo) -
ä¼åå
SELECT MIN(pe.pno)
FROM ape pe
WHERE pe.create_time >= '2020-03-06 00:00:00'
AND pe.create_time <= '2020-03-08 23:59:59'
AND pe.aid = 50
AND pe.flo = '1'
AND pe.is_delete = 0
该SQLçæ¥è¯¢æ¡ä»¶æ¶åå°ä¸ä¸ªååç´¢å¼ï¼create_timeï¼aidï¼floï¼è¿éè¾¹æå¯è½èµ°å°ç´¢å¼æ 嵿¯ create_time æè aid ä¸ flo çç´¢å¼åå¹¶ index merge
-
ä¼åå
SELECT MIN(pe.id), MAX(pe.id)
FROM ape pe
WHERE pe.create_time >= '2020-03-06 00:00:00'
AND pe.create_time <= '2020-03-08 23:59:59'
SELECT MIN(pe.pno)
FROM ape pe
WHERE pe.create_time >= '2020-03-06 00:00:00'
AND pe.create_time <= '2020-03-08 23:59:59'
AND pe.aid = 50
AND pe.flo = '1'
AND pe.is_delete = 0
AND pe.id >= minId AND pe.id <= maxId
ä¼åç¹ï¼a. å æ ¹æ® create_time æ¥è¯¢åº MIN(id)ï¼MAX(id)ï¼åæ minId, maxId ä½ä¸ºæ¥è¯¢æ¡ä»¶ï¼ä½¿å¾ ç´¢å¼åå¹¶ï¼aid & floï¼åè¿è½åéè¿ id è¿æ»¤åå°åè¡¨çæ°æ®ï¼
å½ç¶å®è¿æ¯æå¯è½èµ° create_time ç´¢å¼ï¼è¿å°±çèµ°åªä¸ªç´¢å¼çåºå度æ´é«ï¼éæ©æ´ä¼çç´¢å¼ã
5.æ ¢æ¥äº
-
ç´¢å¼æ åµ
PRIMARY KEY (id),
INDEXidx_wc_sw(wc,sw) -
ä¼åå
SELECT MIN(create_time)
FROM apcd
WHERE sw IN (1, 2, 3, 27, 30)
AND wc IN (
'S0887',
'S0888',
'S0889',
'S1095'
)
GROUP BY wc, sw
该SQLçæ¥è¯¢æ¡ä»¶ï¼group by é½ä½¿ç¨äºèåç´¢å¼ idx_wc_swï¼ä½æ¥è¯¢çæ¯ MIN(create_time)ï¼æä»¥è¿æ¯è¦å表
-
ä¼åå
SELECT MIN(id)
FROM apcd
WHERE sw IN (1, 2, 3, 27, 30)
AND wc IN (
'S0887',
'S0888',
'S0889',
'S1095'
)
GROUP BY wc, sw;
SELECT create_time WHERE id IN(minId1,minId2,minId3)
ä¼åç¹ï¼a. å 为 create_time çåäº èªå¢IDï¼æä»¥å æ ¹æ®èåç´¢å¼ idx_wc_sw æ¥è¯¢åº MIN(id)ï¼æ éå表ï¼åæ ¹æ®è¿äº minId æ¥è¯¢åº create_time
è¡¥å æ»ç»
-
䏿¹ååæ°é»è¾çåæä¸ï¼å¢å æ¥è¯¢æ¡ä»¶ä½¿å¾èµ°å°åºå度æ´é«çç´¢å¼
-
order by xx asc limit 1 æ¿æ¢æ min(xx)ï¼order by xx desc limit 1 æ¿æ¢æ max(xx)ï¼è§é¿æä»¶æåº
-
count(0) éè¿ group by xx åç»ç»è®¡æ»æ°çï¼å¯ä»¥æ¿æ¢æ count(distinct xx)ï¼è§é¿ä¸´æ¶è¡¨
-
join è¡¨å ³èï¼å¯ä»¥æ¹å驱å¨è¡¨ï¼ä»¥æ¥è¯¢æ¡ä»¶åºå度æ´é«ç表ä½ä¸ºä¸»è¡¨é©±å¨ï¼è䏿¯çè¡¨çæ°æ®é大å°å®ä¹"å°è¡¨é©±å¨å¤§è¡¨"
-
çåææçæ¥è¯¢æ¡ä»¶å段æ¯å¦å¯ä»¥æ¿æ¢ï¼ä½¿å¾ç´¢å¼æ´ä¼
-
ç¼©å°æ¥è¯¢çèå´ï¼IN çéåå°ï¼ä¹åç¨åºä¸åèåï¼å½ç¶è¿å¹¶ä¸æ¯ä¼åSQLåç´¢å¼ï¼å®è¿æ¯æ²¡è§£å³æ ¢çé®é¢ï¼åªæ¯æ¯æ¬¡æ¥è¯¢çåºå度æé«äºä¸ç¹
-
ä¸å¡å±é¢ä¸å¢å æ¡ä»¶éå¶ï¼ä»¥éåºç°æçç´¢å¼
-
å·²ç»æ²¡æä¼å空é´ï¼ä¸å¡å±é¢ä¹æ æ³ä¿®æ¹ï¼é£å°±èèå¢å ç´¢å¼ï¼æ°å»ºç´¢å¼ç¹å«æ¯èåç´¢å¼ï¼éç»åå®é ä¸å¡å»ºç«å¯ç¨æ§é«ï¼åºå度é«çç´¢å¼
-
表太大ï¼å ç´¢å¼ä¹å ä¸å¨äºï¼æè å äºææä¹ææ¾ï¼é£å°±èè彿¡£ï¼ååºå表
æ¨èé è¯»ï¼æ¥çåæå¯è®¿é®ï¼
Java å ¨æ ç¥è¯ä½ç³»
ä¸ç¯ç¬å½
ThreadPoolExecutor