ä¸ãèæ¯
ç°å¨MySQLå·²ç»æ为Java Webå¼åçæ é ã
é¢è¯ä¹ç»å¸¸é®å°âMySQLç´¢å¼çæ°æ®ç»ææ¯ä»ä¹ï¼âãâMySQLæ ¢æ¥è¯¢æä¹çï¼âãâèç°ç´¢å¼åéèç°ç´¢å¼çåºå«æ¯ä»ä¹ï¼âï¼âæä¹SQLä¼åâççã
æ¬æå°±âæä¹SQLä¼åâï¼ç®å讲å 个ååã
äºãå æ¡åå
- 对ç»å¸¸æç´¢ãæåºãåç»å建索å¼
- ä¸éå¤çå¼ï¼åºæ°è¶å¤§ï¼ææè¶å¥½
- ç´¢å¼çæ°æ®ç±»åå°½å¯è½çç
- æå·¦åç¼åå
- ä¸è¦å»ºç«è¿å¤çç´¢å¼
- 大éçinsertèèæ¹éæå ¥
- likeä¸è¦å¨åå§ä½ç½®ä½¿ç¨éé 符
Â
ä¸ãè¾ å©å·¥å ·
3.1 explain
建表è¯å¥ç¨æ·ä¿¡æ¯è¡¨
CREATE TABLE `user_info` (
`id` BIGINT(20) NOT NULL AUTO_INCREMENT,
`name` VARCHAR(50) NOT NULL DEFAULT '',
`age` INT(11) DEFAULT NULL,
PRIMARY KEY (`id`),
KEY `name_index` (`name`)
)
ENGINE = InnoDB
DEFAULT CHARSET = utf8mb4
INSERT INTO user_info (name, age) VALUES ('a', 21);
INSERT INTO user_info (name, age) VALUES ('b', 23);
INSERT INTO user_info (name, age) VALUES ('c', 50);
INSERT INTO user_info (name, age) VALUES ('d', 15);
INSERT INTO user_info (name, age) VALUES ('e', 20);
INSERT INTO user_info (name, age) VALUES ('f', 21);
INSERT INTO user_info (name, age) VALUES ('g', 23);
INSERT INTO user_info (name, age) VALUES ('h', 50);
INSERT INTO user_info (name, age) VALUES ('i', 15);
订åä¿¡æ¯è¡¨
CREATE TABLE `order_info` (
`id` BIGINT(20) NOT NULL AUTO_INCREMENT,
`user_id` BIGINT(20) DEFAULT NULL,
`product_name` VARCHAR(50) NOT NULL DEFAULT '',
`productor` VARCHAR(30) DEFAULT NULL,
PRIMARY KEY (`id`),
KEY `user_product_detail_index` (`user_id`, `product_name`, `productor`)
)
ENGINE = InnoDB
DEFAULT CHARSET = utf8
INSERT INTO order_info (user_id, product_name, productor) VALUES (1, 'p1', 'WHH');
INSERT INTO order_info (user_id, product_name, productor) VALUES (1, 'p2', 'WL');
INSERT INTO order_info (user_id, product_name, productor) VALUES (1, 'p1', 'DX');
INSERT INTO order_info (user_id, product_name, productor) VALUES (2, 'p1', 'WHH');
INSERT INTO order_info (user_id, product_name, productor) VALUES (2, 'p5', 'WL');
INSERT INTO order_info (user_id, product_name, productor) VALUES (3, 'p3', 'MA');
INSERT INTO order_info (user_id, product_name, productor) VALUES (4, 'p1', 'WHH');
INSERT INTO order_info (user_id, product_name, productor) VALUES (6, 'p1', 'WHH');
INSERT INTO order_info (user_id, product_name, productor) VALUES (9, 'p8', 'TE');
explainè¯æ³å¾ç®åï¼explain +sqlè¯å¥ï¼å¦
explain select * from user_info where id = 1;
ååçå«ä¹å¦ä¸:
- id: SELECT æ¥è¯¢çæ è¯ç¬¦. æ¯ä¸ª SELECT é½ä¼èªå¨åé ä¸ä¸ªå¯ä¸çæ è¯ç¬¦.
- select_type: SELECT æ¥è¯¢çç±»å.
- table: æ¥è¯¢çæ¯åªä¸ªè¡¨
- partitions: å¹é çååº
- type: join ç±»å
- possible_keys: æ¤æ¬¡æ¥è¯¢ä¸å¯è½éç¨çç´¢å¼
- key: æ¤æ¬¡æ¥è¯¢ä¸ç¡®å使ç¨å°çç´¢å¼.
- ref: åªä¸ªå段æ常æ°ä¸ key ä¸èµ·è¢«ä½¿ç¨
- rows: æ¾ç¤ºæ¤æ¥è¯¢ä¸å ±æ«æäºå¤å°è¡. è¿ä¸ªæ¯ä¸ä¸ªä¼°è®¡å¼.
- filtered: 表示æ¤æ¥è¯¢æ¡ä»¶æè¿æ»¤çæ°æ®çç¾åæ¯
- extra: é¢å¤çä¿¡æ¯
主è¦æ ¹æ®select_typeï¼possible_keysï¼ keyçæ¥å¤æsqlçæ§è½ã
3.2 SQLä¼åå·¥å ·
https://github.com/Meituan-Dianping/SQLAdvisor
SQLAdvisoræ¯ç±ç¾å¢ç¹è¯å ¬å¸ææ¯å·¥ç¨é¨DBAå¢éï¼å京ï¼å¼åç»´æ¤çä¸ä¸ªåæSQLç»åºç´¢å¼ä¼å建议çå·¥å ·ãå®åºäºMySQLåçæè¯æ³è§£æï¼ç»ååæSQLä¸çwhereæ¡ä»¶ãèåæ¡ä»¶ãå¤è¡¨Joinå ³ç³» ç»åºç´¢å¼ä¼å建议
åãç´¢å¼åºç¨çä¸äºåå
4.1 ç´¢å¼è¶å°è¶å¥½
ç´¢å¼æ¯æ åååï¼å¨æåæ£ç´¢æ§è½çåæ¶ï¼ä»¥çºç²æ°æ®åæ§è½åå¢å ç³»ç»è´è½½ä¸ºä»£ä»·çã
4.2 ç´¢å¼åè¶å°è¶å¥½
æäºä¸æsqlä¼åï¼å¹²èæææçwhereæ¡ä»¶é½å ä¸ç´¢å¼ï¼ä¸ä½å¢å äºç´¢å¼çæ°éï¼è¿ä¼åºç°å¾å¤å¤§çå¤åç´¢å¼ã
å¾å¤æ¶ååççååç´¢
4.3 å°½éå°ç¨å½æ°ç´¢å¼
4.4 éæ©æ£ç¡®çç´¢å¼ç±»å
4.5 为å¤åç´¢å¼éæ©æ£ç¡®çå顺åº
 å¦æå¿ é¡»å»ºç«ä¸ä¸ªå å«å¤åçå¤åç´¢å¼æ¶ï¼å°½éå°ä½¿ç¨é¢ç¹ä¸éæ©æ§å¥½çåæåå¨åé¢ã
4.6 为ååºè¡¨éæ©æ£ç¡®çç´¢å¼ç±»å
äºãç´¢å¼åºç¨ç认è¯è¯¯åº
5.1 åªæèµ°ç´¢å¼ææ¯æä¼
è¦çå ·ä½åºæ¯
5.2 ç´¢å¼æçæ 害
5.3 ç´¢å¼è¯å®æ¯è¡¨å°
ä¸ä¸å®ï¼ç°å®ä¸ï¼ç´¢å¼å表差ä¸å¤ä¸æ ·å¤§ï¼ææ¶åçè³æ¯è¡¨è¿å¤§ã
5.4 ç´¢å¼è¾åºçæ°æ®é½æåº
ä¸ä¸å®ï¼FFSæä½è¾åºçæ°æ®å°±æ¯æ åºçã
5.5 ç´¢å¼é«åº¦ä¼æ大影åæ§è½
ç论ä¸ï¼ç´¢å¼é«åº¦ä¼å½±åç´¢å¼çæ£ç´¢é度ï¼ç°å®ä¸ï¼éé«é¢ãé«å¹¶åã大æ°æ®æ£ç´¢ï¼ä¸è¬å¯¹æ§è½çå½±åè¿ä¸æ¯å¾ææ¾ã
5.6 ä½å¾ç´¢å¼å¾å°ä¸å¾å¿«
å½ä½å¾ç´¢å¼åçåºæ°è¾é«æ¯ï¼ä½å¾ç´¢å¼å°±ä¼åå¾å¾åºå¤§ã
æå½èªï¼ãé«æ§è½SQLã
å ãæå
é¢è¯ä¸MySQLæ¯ä¸ä¸ªéç¹ï¼æ客æ¶é´ãMySQL45讲ã讲å¾æ¯è¾å ¨é¢åç³»ç»ï¼ææ¡å¥½äºï¼MySQLé¢è¯è¿ä¸åç»°ç»°æä½ï¼çè³å¯ä»¥ææé¢è¯å®ã
å¦å¤ç³æèå¸çãJavaå·¥ç¨å¸é¢è¯çªå»ç¬¬1å£ãä¹æ¯ä¸å¥è¶ ä¸éçè§é¢ï¼æ讲读åå离ãååºå表çæ¹é¢çç¥è¯ã
ææ¶é´è¿æ¯åºè¯¥ç³»ç»ææ¡ä¸äºæ°æ®åºè®¾è®¡çæ导ååï¼ä»¥åä¼åçæ导ååï¼é¿å æ ¢æ¥è¯¢ã
ä¸ä» æ¯ä¸ºäºé¢è¯ï¼æ´æ¯ä¸ºäºæ´å¥½å°å好ä¸å¡ä»£ç ï¼æé«ææ¯ã