{"id":911,"date":"2025-03-22T14:38:01","date_gmt":"2025-03-22T06:38:01","guid":{"rendered":"https:\/\/eve2333.top\/?p=911"},"modified":"2025-03-22T14:38:01","modified_gmt":"2025-03-22T06:38:01","slug":"mysql%e6%95%b0%e6%8d%ae%e5%ba%93%e5%85%a5%e9%97%a8%e5%88%b0%e5%a4%a7%e8%9b%87%e5%b0%9a%e7%a1%85%e8%b0%b7%e5%ae%8b%e7%ba%a2%e5%ba%b7%e8%80%81%e5%b8%88%e7%ac%94%e8%ae%b0-%e9%ab%98%e7%ba%a7%e7%af%87-p-10","status":"publish","type":"post","link":"https:\/\/eve2333.top\/?p=911","title":{"rendered":"MySQL\u6570\u636e\u5e93\u5165\u95e8\u5230\u5927\u86c7\u5c1a\u7845\u8c37\u5b8b\u7ea2\u5eb7\u8001\u5e08\u7b14\u8bb0 \u9ad8\u7ea7\u7bc7 part10"},"content":{"rendered":"\n<h1 class=\"wp-block-heading\">&nbsp;\u7b2c10\u7ae0_\u7d22\u5f15\u4f18\u5316\u4e0e\u67e5\u8be2\u4f18\u5316<\/h1>\n\n\n\n<blockquote class=\"wp-block-quote is-layout-flow wp-block-quote-is-layout-flow\">\n<p>\u867d\u7136SQL\u67e5\u8be2\u4f18\u5316\u7684\u6280\u672f\u6709\u5f88\u591a\uff0c\u4f46\u662f\u5927\u65b9\u5411\u4e0a\u5b8c\u5168\u53ef\u4ee5\u5206\u6210\u7269\u7406\u67e5\u8be2\u4f18\u5316\u548c\u903b\u8f91\u67e5\u8be2\u4f18\u5316\u4e24\u5927\u5757\u3002<br>\u00b7\u7269\u7406\u67e5\u8be2\u4f18\u5316\u662f\u901a\u8fc7\u7d22\u5f15\u548c\u8868\u8fde\u63a5\u65b9\u5f0f\u7b49\u6280\u672f\u6765\u8fdb\u884c\u4f18\u5316\uff0c\u8fd9\u91cc\u91cd\u70b9\u9700\u8981\u638c\u63e1\u7d22\u5f15\u7684\u4f7f\u7528\u3002<br>\u00b7\u903b\u8f91\u67e5\u8be2\u4f18\u5316\u5c31\u662f\u901a\u8fc7SQL\u7b49\u4ef7\u53d8\u6362\u63d0\u5347\u67e5\u8be2\u6548\u7387\uff0c\u76f4\u767d\u4e00\u70b9\u5c31\u662f\u8bf4\uff0c\u6362\u4e00\u79cd\u67e5\u8be2\u5199\u6cd5\u6267\u884c\u6548\u7387\u53ef\u80fd\u66f4\u9ad8\u3002<\/p>\n<\/blockquote>\n\n\n\n<h2 class=\"wp-block-heading\">1.\u6570\u636e\u51c6\u5907<\/h2>\n\n\n\n<pre class=\"wp-block-code\"><code>#1. \u6570\u636e\u51c6\u5907\n\nCREATE DATABASE atguigudb2;\n\nUSE atguigudb2;\n\n#\u5efa\u8868\nCREATE TABLE `class` (\n `id` INT(11) NOT NULL AUTO_INCREMENT,\n `className` VARCHAR(30) DEFAULT NULL,\n `address` VARCHAR(40) DEFAULT NULL,\n `monitor` INT NULL ,\n PRIMARY KEY (`id`)\n) ENGINE=INNODB AUTO_INCREMENT=1 DEFAULT CHARSET=utf8;\n \nCREATE TABLE `student` (\n `id` INT(11) NOT NULL AUTO_INCREMENT,\n `stuno` INT NOT NULL ,\n `name` VARCHAR(20) DEFAULT NULL,\n `age` INT(3) DEFAULT NULL,\n `classId` INT(11) DEFAULT NULL,\n PRIMARY KEY (`id`)\n #CONSTRAINT `fk_class_id` FOREIGN KEY (`classId`) REFERENCES `t_class` (`id`)\n) ENGINE=INNODB AUTO_INCREMENT=1 DEFAULT CHARSET=utf8;\n\n\nSET GLOBAL log_bin_trust_function_creators=1; <\/code><\/pre>\n\n\n\n<pre class=\"wp-block-code\"><code>#\u968f\u673a\u4ea7\u751f\u5b57\u7b26\u4e32\nDELIMITER \/\/\nCREATE FUNCTION rand_string(n INT) RETURNS VARCHAR(255)\nBEGIN    \nDECLARE chars_str VARCHAR(100) DEFAULT 'abcdefghijklmnopqrstuvwxyzABCDEFJHIJKLMNOPQRSTUVWXYZ';\nDECLARE return_str VARCHAR(255) DEFAULT '';\nDECLARE i INT DEFAULT 0;\nWHILE i &lt; n DO  \nSET return_str =CONCAT(return_str,SUBSTRING(chars_str,FLOOR(1+RAND()*52),1));  \nSET i = i + 1;\nEND WHILE;\nRETURN return_str;\nEND \/\/\nDELIMITER ;\n\n#\u7528\u4e8e\u968f\u673a\u4ea7\u751f\u591a\u5c11\u5230\u591a\u5c11\u7684\u7f16\u53f7\nDELIMITER \/\/\nCREATE FUNCTION  rand_num (from_num INT ,to_num INT) RETURNS INT(11)\nBEGIN   \nDECLARE i INT DEFAULT 0;  \nSET i = FLOOR(from_num +RAND()*(to_num - from_num+1))   ;\nRETURN i;  \nEND \/\/\nDELIMITER ;\n\n#\u521b\u5efa\u5f80stu\u8868\u4e2d\u63d2\u5165\u6570\u636e\u7684\u5b58\u50a8\u8fc7\u7a0b\nDELIMITER \/\/\nCREATE PROCEDURE  insert_stu(  START INT ,  max_num INT )\nBEGIN  \nDECLARE i INT DEFAULT 0;   \n SET autocommit = 0;    #\u8bbe\u7f6e\u624b\u52a8\u63d0\u4ea4\u4e8b\u52a1\n REPEAT  #\u5faa\u73af\n SET i = i + 1;  #\u8d4b\u503c\n INSERT INTO student (stuno, NAME ,age ,classId ) VALUES ((START+i),rand_string(6),rand_num(1,50),rand_num(1,1000));  \n UNTIL i = max_num  \n END REPEAT;  \n COMMIT;  #\u63d0\u4ea4\u4e8b\u52a1\nEND \/\/\nDELIMITER ;<\/code><\/pre>\n\n\n\n<p>&nbsp;1.\u5efa\u8868-----2.\u8bbe\u7f6e\u53c2\u6570----3.\u521b\u5efa\u53c2\u6570-------5.\u8c03\u7528\u5b58\u50a8\u8fc7\u7a0b----6.\u5220\u9664\u67d0\u8868\u7684\u7d22\u5f15<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>#\u6267\u884c\u5b58\u50a8\u8fc7\u7a0b\uff0c\u5f80class\u8868\u6dfb\u52a0\u968f\u673a\u6570\u636e\nDELIMITER \/\/\nCREATE PROCEDURE `insert_class`(  max_num INT )\nBEGIN  \nDECLARE i INT DEFAULT 0;   \n SET autocommit = 0;    \n REPEAT  \n SET i = i + 1;  \n INSERT INTO class ( classname,address,monitor ) VALUES (rand_string(8),rand_string(10),rand_num(1,100000));  \n UNTIL i = max_num  \n END REPEAT;  \n COMMIT; \nEND \/\/\nDELIMITER ;\n\n\n#\u6267\u884c\u5b58\u50a8\u8fc7\u7a0b\uff0c\u5f80class\u8868\u6dfb\u52a01\u4e07\u6761\u6570\u636e  \nCALL insert_class(10000);\n\n#\u6267\u884c\u5b58\u50a8\u8fc7\u7a0b\uff0c\u5f80stu\u8868\u6dfb\u52a050\u4e07\u6761\u6570\u636e  \nCALL insert_stu(100000,500000);\n\nSELECT COUNT(*) FROM class;\n\nSELECT COUNT(*) FROM student;<\/code><\/pre>\n\n\n\n<pre class=\"wp-block-code\"><code>DELIMITER \/\/\nCREATE  PROCEDURE `proc_drop_index`(dbname VARCHAR(200),tablename VARCHAR(200))\nBEGIN\n       DECLARE done INT DEFAULT 0;\n       DECLARE ct INT DEFAULT 0;\n       DECLARE _index VARCHAR(200) DEFAULT '';\n       DECLARE _cur CURSOR FOR  SELECT   index_name   FROM information_schema.STATISTICS   WHERE table_schema=dbname AND table_name=tablename AND seq_in_index=1 AND    index_name &lt;&gt;'PRIMARY'  ;\n#\u6bcf\u4e2a\u6e38\u6807\u5fc5\u987b\u4f7f\u7528\u4e0d\u540c\u7684declare continue handler for not found set done=1\u6765\u63a7\u5236\u6e38\u6807\u7684\u7ed3\u675f\n       DECLARE  CONTINUE HANDLER FOR NOT FOUND SET done=2 ;      \n#\u82e5\u6ca1\u6709\u6570\u636e\u8fd4\u56de,\u7a0b\u5e8f\u7ee7\u7eed,\u5e76\u5c06\u53d8\u91cfdone\u8bbe\u4e3a2\n        OPEN _cur;\n        FETCH _cur INTO _index;\n        WHILE  _index&lt;&gt;'' DO \n               SET @str = CONCAT(\"drop index \" , _index , \" on \" , tablename ); \n               PREPARE sql_str FROM @str ;\n               EXECUTE  sql_str;\n               DEALLOCATE PREPARE sql_str;\n               SET _index=''; \n               FETCH _cur INTO _index; \n        END WHILE;\n   CLOSE _cur;\nEND \/\/\nDELIMITER ;<\/code><\/pre>\n\n\n\n<h2 class=\"wp-block-heading\">2.\u7d22\u5f15\u5931\u6548\u6848\u4f8b<\/h2>\n\n\n\n<p><a href=\"https:\/\/www.bilibili.com\/video\/BV1iq4y1u7vj?t=726.8&amp;p=141\" target=\"_blank\"  rel=\"nofollow\" >141-\u6570\u636e\u51c6\u5907\u4e0e\u7d22\u5f15\u5931\u6548\u768411\u79cd\u60c5\u51b51_\u54d4\u54e9\u54d4\u54e9_bilibili<\/a><\/p>\n\n\n\n<h2 class=\"wp-block-heading\">3.\u5173\u8054\u67e5\u8be2\u4f18\u5316<\/h2>\n\n\n\n<h3 class=\"wp-block-heading\">3.1\u6570\u636e\u51c6\u5907<\/h3>\n\n\n\n<pre class=\"wp-block-code\"><code>#\u5206\u7c7b\nCREATE TABLE IF NOT EXISTS `type` (\n`id` INT(10) UNSIGNED NOT NULL AUTO_INCREMENT,\n`card` INT(10) UNSIGNED NOT NULL,\nPRIMARY KEY (`id`)\n);\n#\u56fe\u4e66\nCREATE TABLE IF NOT EXISTS `book` (\n`bookid` INT(10) UNSIGNED NOT NULL AUTO_INCREMENT,\n`card` INT(10) UNSIGNED NOT NULL,\nPRIMARY KEY (`bookid`)\n);\n\n#\u5411\u5206\u7c7b\u8868\u4e2d\u6dfb\u52a020\u6761\u8bb0\u5f55\nINSERT INTO TYPE(card) VALUES(FLOOR(1 + (RAND() * 20)));\nINSERT INTO TYPE(card) VALUES(FLOOR(1 + (RAND() * 20)));\nINSERT INTO TYPE(card) VALUES(FLOOR(1 + (RAND() * 20)));\nINSERT INTO TYPE(card) VALUES(FLOOR(1 + (RAND() * 20)));\nINSERT INTO TYPE(card) VALUES(FLOOR(1 + (RAND() * 20)));\nINSERT INTO TYPE(card) VALUES(FLOOR(1 + (RAND() * 20)));\nINSERT INTO TYPE(card) VALUES(FLOOR(1 + (RAND() * 20)));\nINSERT INTO TYPE(card) VALUES(FLOOR(1 + (RAND() * 20)));\nINSERT INTO TYPE(card) VALUES(FLOOR(1 + (RAND() * 20)));\nINSERT INTO TYPE(card) VALUES(FLOOR(1 + (RAND() * 20)));\nINSERT INTO TYPE(card) VALUES(FLOOR(1 + (RAND() * 20)));\nINSERT INTO TYPE(card) VALUES(FLOOR(1 + (RAND() * 20)));\nINSERT INTO TYPE(card) VALUES(FLOOR(1 + (RAND() * 20)));\nINSERT INTO TYPE(card) VALUES(FLOOR(1 + (RAND() * 20)));\nINSERT INTO TYPE(card) VALUES(FLOOR(1 + (RAND() * 20)));\nINSERT INTO TYPE(card) VALUES(FLOOR(1 + (RAND() * 20)));\nINSERT INTO TYPE(card) VALUES(FLOOR(1 + (RAND() * 20)));\nINSERT INTO TYPE(card) VALUES(FLOOR(1 + (RAND() * 20)));\nINSERT INTO TYPE(card) VALUES(FLOOR(1 + (RAND() * 20)));\nINSERT INTO TYPE(card) VALUES(FLOOR(1 + (RAND() * 20)));\n\n#\u5411\u56fe\u4e66\u8868\u4e2d\u6dfb\u52a020\u6761\u8bb0\u5f55\nINSERT INTO book(card) VALUES(FLOOR(1 + (RAND() * 20)));\nINSERT INTO book(card) VALUES(FLOOR(1 + (RAND() * 20)));\nINSERT INTO book(card) VALUES(FLOOR(1 + (RAND() * 20)));\nINSERT INTO book(card) VALUES(FLOOR(1 + (RAND() * 20)));\nINSERT INTO book(card) VALUES(FLOOR(1 + (RAND() * 20)));\nINSERT INTO book(card) VALUES(FLOOR(1 + (RAND() * 20)));\nINSERT INTO book(card) VALUES(FLOOR(1 + (RAND() * 20)));\nINSERT INTO book(card) VALUES(FLOOR(1 + (RAND() * 20)));\nINSERT INTO book(card) VALUES(FLOOR(1 + (RAND() * 20)));\nINSERT INTO book(card) VALUES(FLOOR(1 + (RAND() * 20)));\nINSERT INTO book(card) VALUES(FLOOR(1 + (RAND() * 20)));\nINSERT INTO book(card) VALUES(FLOOR(1 + (RAND() * 20)));\nINSERT INTO book(card) VALUES(FLOOR(1 + (RAND() * 20)));\nINSERT INTO book(card) VALUES(FLOOR(1 + (RAND() * 20)));\nINSERT INTO book(card) VALUES(FLOOR(1 + (RAND() * 20)));\nINSERT INTO book(card) VALUES(FLOOR(1 + (RAND() * 20)));\nINSERT INTO book(card) VALUES(FLOOR(1 + (RAND() * 20)));\nINSERT INTO book(card) VALUES(FLOOR(1 + (RAND() * 20)));\nINSERT INTO book(card) VALUES(FLOOR(1 + (RAND() * 20)));\nINSERT INTO book(card) VALUES(FLOOR(1 + (RAND() * 20)));\n\n#\u6211\u4eec\u5df2\u7ecf\u5199\u4e86\u4e00\u4e2a\u7b80\u5355\u7684\u5de6\u5916\u8fde\u63a5\nEXPLAIN SELECT SQL_NO_CACHE * FROM `type` LEFT JOIN book ON type.card = book.card;<\/code><\/pre>\n\n\n\n<p>\u5047\u8bbe\u6211\u4eectype\u670920\u6761\u6570\u636e , \u800cboook\u670930\u6761\u6570\u636e , \u7c7b\u4f3c\u4e8e\u5d4c\u5957\u5faa\u73af\u4e00\u6837 , type\u662f\u9a71\u52a8\u8868\u800cbook\u662f\u88ab\u9a71\u52a8\u8868,\u5148\u4ece\u9a71\u52a8\u8868type\u4e2d\u4ee5\"type.card = book.card\"\u8fd9\u6837\u7684\u6761\u4ef6, \u4e00\u904d\u4e00\u904d\u7684ALL\u904d\u538630\u6b21,\u663e\u7136\u8981\u4f18\u5316:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>#\u6dfb\u52a0\u7d22\u5f15\nCREATE INDEX Y ON book(card);\n\nEXPLAIN SELECT SQL_NO_CACHE * FROM `type` LEFT JOIN book ON type.card = book.card;<\/code><\/pre>\n\n\n\n<p>\u8fd9\u4e0b\u4e3b\u5916\u94fe\u63a5,\u5982\u679c\u53ea\u80fd\u6dfb\u52a0\u4e00\u4e2a\u7d22\u5f15,\u8bf7\u4e3a\u88ab\u9a71\u52a8\u8868\u6dfb\u52a0\u7d22\u5f15<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>CREATE INDEX X ON `type`(card);\n\nEXPLAIN SELECT SQL_NO_CACHE * FROM `type` LEFT JOIN book ON type.card = book.card;<\/code><\/pre>\n\n\n\n<p><img loading=\"lazy\" decoding=\"async\" height=\"126\" width=\"681\" src=\"https:\/\/i-blog.csdnimg.cn\/direct\/dd343b6538194cad9366170f952f98c3.png\" alt=\"\"><\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>#\u63a5\u4e0b\u6765\u53bb\u6389\u7d22\u5f15\nDROP INDEX Y ON book;\n\nEXPLAIN SELECT SQL_NO_CACHE * FROM `type` LEFT JOIN book ON type.card = book.card;\nDROP INDEX X ON `type`;\n<\/code><\/pre>\n\n\n\n<pre class=\"wp-block-code\"><code>#\u5185\u8fde\u63a5\nEXPLAIN SELECT SQL_NO_CACHE * FROM `type` INNER JOIN book ON type.card = book.card;\n#\u6dfb\u52a0\u7d22\u5f15\nCREATE INDEX Y ON book(card);\n\nEXPLAIN SELECT SQL_NO_CACHE * FROM `type` INNER JOIN book ON type.card = book.card;\n\nCREATE INDEX X ON `type`(card);\n\n\u5185\u8fde\u63a5\u4e2d\u9a71\u52a8\u8868\u548c\u88ab\u9a71\u52a8\u8868\u53ef\u4ee5\u4e92\u6362, \u4e0d\u4f1a\u5f71\u54cd\u6700\u540e\u7684\u67e5\u8be2\u7ed3\u679c; \u800c \u5de6\/\u53f3\u5916\u8fde\u63a5\u5c31\u4e0d\u80fd\u8f7b\u6613\u4e92\u6362\u4e86\n#\u7ed3\u8bba\uff1a\u5bf9\u4e8e\u5185\u8fde\u63a5\u6765\u8bf4\uff0c\u67e5\u8be2\u4f18\u5316\u5668\u53ef\u4ee5\u51b3\u5b9a\u8c01\u4f5c\u4e3a\u9a71\u52a8\u8868\uff0c\u8c01\u4f5c\u4e3a\u88ab\u9a71\u52a8\u8868\u51fa\u73b0\u7684\nEXPLAIN SELECT SQL_NO_CACHE * FROM `type` INNER JOIN book ON type.card = book.card;\n\n\n#\u5220\u9664\u7d22\u5f15\nDROP INDEX Y ON book;\n#\u7ed3\u8bba\uff1a\u5bf9\u4e8e\u5185\u8fde\u63a5\u6765\u8bb2\uff0c\u5982\u679c\u8868\u7684\u8fde\u63a5\u6761\u4ef6\u4e2d\u53ea\u80fd\u6709\u4e00\u4e2a\u5b57\u6bb5\u6709\u7d22\u5f15\uff0c\u5219\u6709\u7d22\u5f15\u7684\u5b57\u6bb5\u6240\u5728\u7684\u8868\u4f1a\u88ab\u4f5c\u4e3a\u88ab\u9a71\u52a8\u8868\u51fa\u73b0\u3002\nEXPLAIN SELECT SQL_NO_CACHE * FROM `type` INNER JOIN book ON type.card = book.card;<\/code><\/pre>\n\n\n\n<pre class=\"wp-block-code\"><code>CREATE INDEX Y ON book(card);\nEXPLAIN SELECT SQL_NO_CACHE * FROM `type` INNER JOIN book ON type.card = book.card;\n\n#\u5411type\u8868\u4e2d\u6dfb\u52a0\u6570\u636e\uff0820\u6761\u6570\u636e\uff09\nINSERT INTO `type`(card) VALUES(FLOOR(1 + (RAND() * 20)));\nINSERT INTO `type`(card) VALUES(FLOOR(1 + (RAND() * 20)));\nINSERT INTO `type`(card) VALUES(FLOOR(1 + (RAND() * 20)));\nINSERT INTO `type`(card) VALUES(FLOOR(1 + (RAND() * 20)));\nINSERT INTO `type`(card) VALUES(FLOOR(1 + (RAND() * 20)));\nINSERT INTO `type`(card) VALUES(FLOOR(1 + (RAND() * 20)));\nINSERT INTO `type`(card) VALUES(FLOOR(1 + (RAND() * 20)));\nINSERT INTO `type`(card) VALUES(FLOOR(1 + (RAND() * 20)));\nINSERT INTO `type`(card) VALUES(FLOOR(1 + (RAND() * 20)));\nINSERT INTO `type`(card) VALUES(FLOOR(1 + (RAND() * 20)));\nINSERT INTO `type`(card) VALUES(FLOOR(1 + (RAND() * 20)));\nINSERT INTO `type`(card) VALUES(FLOOR(1 + (RAND() * 20)));\nINSERT INTO `type`(card) VALUES(FLOOR(1 + (RAND() * 20)));\nINSERT INTO `type`(card) VALUES(FLOOR(1 + (RAND() * 20)));\nINSERT INTO `type`(card) VALUES(FLOOR(1 + (RAND() * 20)));\nINSERT INTO `type`(card) VALUES(FLOOR(1 + (RAND() * 20)));\nINSERT INTO `type`(card) VALUES(FLOOR(1 + (RAND() * 20)));\nINSERT INTO `type`(card) VALUES(FLOOR(1 + (RAND() * 20)));\nINSERT INTO `type`(card) VALUES(FLOOR(1 + (RAND() * 20)));\nINSERT INTO `type`(card) VALUES(FLOOR(1 + (RAND() * 20)));\n\n#\u7ed3\u8bba\uff1a\u5bf9\u4e8e\u5185\u8fde\u63a5\u6765\u8bf4\uff0c\u5728\u4e24\u4e2a\u8868\u7684\u8fde\u63a5\u6761\u4ef6\u90fd\u5b58\u5728\u7d22\u5f15\u7684\u60c5\u51b5\u4e0b\uff0c\u4f1a\u9009\u62e9\u5c0f\u8868\u4f5c\u4e3a\u9a71\u52a8\u8868\u3002\u201c\u5c0f\u8868\u9a71\u52a8\u5927\u8868\u201d\nEXPLAIN SELECT SQL_NO_CACHE * FROM `type` INNER JOIN book ON type.card = book.card;<\/code><\/pre>\n\n\n\n<p>\u73b0\u5728type\u5c31\u53d8\u6210ref\u4e86,\u5c0f\u8868\u9a71\u52a8\u5927\u8868<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">3.4 JOIN\u8bed\u53e5\u7684\u539f\u7406<\/h3>\n\n\n\n<p>&nbsp;join\u65b9\u5f0f\u8fde\u63a5\u591a\u4e2a\u8868\uff0c\u672c\u8d28\u5c31\u662f\u5404\u4e2a\u8868\u4e4b\u95f4\u6570\u636e\u7684\u5faa\u73af\u5339\u914d\u3002MySQL5.5\u7248\u672c\u4e4b\u524d\uff0cMySQL\u53ea\u652f\u6301\u4e00\u79cd\u8868\u95f4\u5173\u8054\u65b9\u5f0f\uff0c\u5c31\u662f<strong>\u5d4c\u5957\u5faa\u73af\uff08NestedLoopJoin)\u3002<\/strong>\u5982\u679c\u5173\u8054\u8868\u7684\u6570\u636e\u91cf\u5f88\u5927\uff0c\u5219join\u5173\u8054\u7684\u6267\u884c\u65f6\u95f4\u4f1a\u975e\u5e38\u957f\u3002\u5728MySQL5.5\u4ee5\u540e\u7684\u7248\u672c\u4e2d\uff0cMySQL\u901a\u8fbe\u5f15\u5165BNLJ\u7b97\u6cd5\u6765\u4f18\u5316\u5d4c\u5957\u6267\u884c\u3002<\/p>\n\n\n\n<h4 class=\"wp-block-heading\">1.\u9a71\u52a8\u8868\u548c\u88ab\u9a71\u52a8\u8868<\/h4>\n\n\n\n<p>\u9a71\u52a8\u8868\u5c31\u662f\u4e3b\u8868\uff0c\u88ab\u9a71\u52a8\u8868\u5c31\u662f\u4ece\u8868\u3001\u975e\u9a71\u52a8\u8868\u3002<\/p>\n\n\n\n<p>&nbsp;\u5bf9\u4e8e\u5185\u8fde\u63a5\u6765\u8bf4\uff1a<br>&nbsp; &nbsp; &nbsp;<strong>SELECT * FROM A JOIN B ON..<\/strong><br>A\u4e00\u5b9a\u662f\u9a71\u52a8\u8868\u5417\uff1f\u4e0d\u4e00\u5b9a\uff0c\u4f18\u5316\u5668\u4f1a\u6839\u636e\u4f60\u67e5\u8be2\u8bed\u53e5\u505a\u4f18\u5316\uff0c\u51b3\u5b9a\u5148\u67e5\u54ea\u5f20\u8868\u3002\u5148\u67e5\u8be2\u7684\u90a3\u5f20\u8868\u5c31\u662f\u9a71\u52a8\u8868\uff0c\u53cd\u4e4b\u5c31\u662f\u88ab\u9a71\u52a8\u8868\u3002\u901a\u8fc7explain\u5173\u952e\u5b57\u53ef\u4ee5\u67e5\u770b\u3002<\/p>\n\n\n\n<p>&nbsp;\u5bf9\u4e8e\u5916\u8fde\u63a5\u6765\u8bf4<br><strong>SELECT * FROM A LEFT JOIN B ON...<br>#\u6216<br>SELECT * FROM B RIGHT JOIN A ON..<\/strong><\/p>\n\n\n\n<p>\u901a\u5e38\uff0c\u5927\u5bb6\u4f1a\u8ba4\u4e3aA\u5c31\u662f\u9a71\u52a8\u8868\uff0cB\u5c31\u662f\u88ab\u9a71\u52a8\u8868\u3002\u4f46\u4e5f\u672a\u5fc5\u3002\u6d4b\u8bd5\u5982\u4e0b\uff1a<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>#JOIN\u7684\u5e95\u5c42\u539f\u7406\n\nCREATE TABLE a(f1 INT, f2 INT, INDEX(f1))ENGINE=INNODB;\n\nCREATE TABLE b(f1 INT, f2 INT)ENGINE=INNODB;\n\n\nINSERT INTO a VALUES(1,1),(2,2),(3,3),(4,4),(5,5),(6,6);\n\nINSERT INTO b VALUES(3,3),(4,4),(5,5),(6,6),(7,7),(8,8);\n\n\n#\u6d4b\u8bd51\nEXPLAIN SELECT * FROM a LEFT JOIN b ON(a.f1=b.f1) WHERE (a.f2=b.f2);\n#\u6b64\u65f6\u5df2\u7ecf\u53d8\u6210\u4e86\u4e00\u4e2a\u5916\u8fde\u63a5\n\n#\u6d4b\u8bd52\nEXPLAIN SELECT * FROM a LEFT JOIN b ON(a.f1=b.f1) AND (a.f2=b.f2);\n\n#\u6d4b\u8bd53\nEXPLAIN SELECT * FROM a JOIN b ON(a.f1=b.f1) WHERE (a.f2=b.f2);\n\n\nSHOW VARIABLES LIKE '%optimizer_switch%';\n\nSHOW VARIABLES LIKE '%join_buffer%';<\/code><\/pre>\n\n\n\n<p>\u5916\u8fde\u63a5\u672c\u6765on\u540e\u9762\u52a0\u7684\u8fde\u63a5\u6761\u4ef6\uff0cwhere\u540e\u52a0\u666e\u901a\u8fc7\u6ee4\u6761\u4ef6\u3002\u5982\u679cwhere\u540e\u8fd8\u52a0\u8fde\u63a5\u6761\u4ef6\u5c31\u6210\u5185\u8fde\u63a5\u4e86<\/p>\n\n\n\n<p><img loading=\"lazy\" decoding=\"async\" height=\"342\" width=\"680\" src=\"https:\/\/i-blog.csdnimg.cn\/direct\/fa6f4bd4e6144a6ca8dbd6d95e9d06da.png\" alt=\"\"><\/p>\n\n\n\n<p>\u5916\u8868\u626b\u63cf\u6b21\u6570\uff1a1,\u5185\u8868\u626b\u63cf\u6b21\u6570\uff1aA,\u8bfb\u53d6\u8bb0\u5f55\u6570\uff1aA+B*A,JOIN\u6bd4\u8f83\u6b21\u6570\uff1aB*A,\u56de\u8868\u8bfb\u53d6\u8bb0\u5f55\u6b21\u6570\uff1a0<br>\u5f53\u7136mysql\u80af\u5b9a\u4e0d\u4f1a\u8fd9\u4e48\u7c97\u66b4\u7684\u53bb\u8fdb\u884c\u8868\u7684\u8fde\u63a5\uff0c\u6240\u4ee5\u5c31\u51fa\u73b0\u4e86\u540e\u9762\u7684\u4e24\u79cd\u5bf9Nested-LoopJoin\u4f18\u5316\u7b97\u6cd5\u3002<\/p>\n\n\n\n<blockquote class=\"wp-block-quote is-layout-flow wp-block-quote-is-layout-flow\">\n<p>\u6211\u4eec\u4eceA\u8868\u4e2d\u53d6\u4e00\u4e2a\u6570\u636e\u51fa\u6765\uff0c\u7136\u540eB\u4e2d\u51fa\u6765\u6570\u636e\u4e00\u4e2a\u4e2a\u7684\u5230\u5185\u5b58\u4e2d\uff0cA\u90a3\u4e2a\u5c31\u4e00\u4e2a\u4e2a\u5bf9\u5e94\u7684\u5728\u5185\u5b58\u4e2d\u8d70\u8d70\u8d70\uff0c\u8d70\u5b8c\u5185\u5b58\u5c31\u6e05\u6389\u4e86\uff1b\u7136\u540eA\u53d6\u7b2c\u4e8c\u4e2a\u6570\u636e\uff0cB\u91cc\u9762\u518d\u52a0\u8f7d\u4e00\u904d\uff0c\u518d\u6e05\u6389\u3002<\/p>\n<\/blockquote>\n\n\n\n<h4 class=\"wp-block-heading\">&nbsp;3.Index Nested-Loop Join\uff08\u7d22\u5f15\u5d4c\u5957\u5faa\u73af\u8fde\u63a5\uff09<\/h4>\n\n\n\n<p>IndexNested-LoopJoin\u5176\u4f18\u5316\u7684\u601d\u8def\u4e3b\u8981\u662f\u4e3a\u4e86\u51cf\u5c11\u5185\u5c42\u8868\u6570\u636e\u7684\u5339\u914d\u6b21\u6570\uff0c\u6240\u4ee5\u8981\u6c42\u88ab\u9a71\u52a8\u8868\u4e0a\u5fc5\u987b\u6709\u7d22\u5f15\u624d\u884c\u3002\u901a\u8fc7\u5916\u5c42\u8868\u5339\u914d\u6761\u4ef6\u76f4\u63a5\u4e0e\u5185\u5c42\u8868\u7d22\u5f15\u8fdb\u884c\u5339\u914d\uff0c\u907f\u514d\u548c\u5185\u5c42\u8868\u7684\u6bcf\u6761\u8bb0\u5f55\u53bb\u8fdb\u884c\u6bd4\u8f83\uff0c\u8fd9\u6837\u6781\u5927\u7684\u51cf\u5c11\u4e86\u5bf9\u5185\u5c42\u8868\u7684\u5339\u914d\u6b21\u6570\u3002<img loading=\"lazy\" decoding=\"async\" height=\"319\" width=\"681\" src=\"https:\/\/i-blog.csdnimg.cn\/direct\/37111252c2d6482e951a3dce30394938.png\" alt=\"\"><\/p>\n\n\n\n<p>&nbsp;\u5f00\u9500\u7edf\u8ba1SNLJINLJ<br>\u5916\u8868\u626b\u63cf\u6b21\u6570\uff1a1&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; 1<br>\u5185\u8868\u626b\u63cf\u6b21\u6570\uff1aA&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; 0<br>\u8bfb\u53d6\u8bb0\u5f55\u6570\uff1aA+B*A&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; A+B(match)<br>JOIN\u6bd4\u8f83\u6b21\u6570\uff1aB*A&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; A*Index(Height)<br>\u56de\u8868\u8bfb\u53d6\u8bb0\u5f55\u6b21\u6570\uff1a0&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; B(match) (if possible)<\/p>\n\n\n\n<h4 class=\"wp-block-heading\">4.Bldck Nested-Loop Join\uff08\u5757\u5d4c\u5957\u5faa\u73af\u8fde\u63a5\uff09<\/h4>\n\n\n\n<p>\u5982\u679c\u5b58\u5728\u7d22\u5f15\uff0c\u90a3\u4e48\u4f1a\u4f7f\u7528index\u7684\u65b9\u5f0f\u8fdb\u884cjoin\uff0c\u5982\u679cjoin\u7684\u5217\u6ca1\u6709\u7d22\u5f15l\uff0c\u88ab\u9a71\u52a8\u8868\u8981\u626b\u63cf\u7684\u6b21\u6570\u592a\u591a\u4e86\u3002\u6bcf\u6b21\u8bbf\u95ee\u88ab\u9a71\u52a8\u8868\uff0c\u5176\u8868\u4e2d\u7684\u8bb0\u5f55\u90fd\u4f1a\u88ab\u52a0\u8f7d\u5230\u5185\u5b58\u4e2d\uff0c\u7136\u540e\u518d\u4ece\u9a71\u52a8\u8868\u4e2d\u53d6\u4e00\u6761\u4e0e\u5176\u5339\u914d\uff0c\u5339\u914d\u7ed3\u675f\u540e\u6e05\u9664\u5185\u5b58\uff0c\u7136\u540e\u518d\u4ece\u9a71\u52a8\u8868\u4e2d\u52a0\u8f7d\u4e00\u6761\u8bb0\u5f55\uff0c\u7136\u540e\u628a\u88ab\u9a71\u52a8\u8868\u7684\u8bb0\u5f55\u5728\u52a0\u8f7d\u5230\u5185\u5b58\u5339\u914d\uff0c\u8fd9\u6837\u5468\u800c\u590d\u59cb\uff0c\u5927\u5927\u589e\u52a0\u4e8610\u7684\u6b21\u6570\u3002\u4e3a\u4e86\u51cf\u5c11\u88ab\u9a71\u52a8\u8868\u7684io\u6b21\u6570\uff0c\u5c31\u51fa\u73b0\u4e86BlockNested-LoopJoin\u7684\u65b9\u5f0f\u3002<\/p>\n\n\n\n<p>\u4e0d\u518d\u662f\u9010\u6761\u83b7\u53d6\u9a71\u52a8\u8868\u7684\u6570\u636e\uff0c\u800c\u662f<strong>\u4e00\u5757\u4e00\u5757<\/strong>\u7684\u83b7\u53d6\uff0c\u5f15l\u5165\u4e86joinbuffer\u7f13\u51b2\u533a\uff0c\u5c06\u9a71\u52a8\u8868join\u76f8\u5173\u7684\u90e8\u5206\u6570\u636e\u5217\uff08\u5927\u5c0f\u53d7joinbuffer\u7684\u9650\u5236\uff09\u7f13\u5b58\u5230joinbufer\u4e2d\uff0c\u7136\u540e\u5168\u8868\u626b\u63cf\u88ab\u9a71\u52a8\u8868\uff0c\u88ab\u9a71\u52a8\u8868\u7684\u6bcf\u4e00\u6761\u8bb0\u5f55\u4e00\u6b21\u6027\u548cjoinbuffer\u4e2d\u7684\u6240\u6709\u9a71\u52a8\u8868\u8bb0\u5f55\u8fdb\u884c\u5339\u914d\uff08\u5185\u5b58\u4e2d\u64cd\u4f5c\uff09\uff0c\u5c06\u7b80\u5355\u5d4c\u5957\u5faa\u73af\u4e2d\u7684\u591a\u6b21\u6bd4\u8f83\u5408\u5e76\u6210\u4e00\u6b21\u964d\u4f4e\u4e86\u88ab\u9a71\u52a8\u8868\u7684\u8bbf\u95ee\u9891\u7387\u3002<\/p>\n\n\n\n<p><img loading=\"lazy\" decoding=\"async\" height=\"437\" width=\"680\" src=\"https:\/\/i-blog.csdnimg.cn\/direct\/17a8e0a2876a4090a868ba1abe8f67ea.png\" alt=\"\"><\/p>\n\n\n\n<p>\u5f00\u9500\u7edf\u8ba1&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;SNLJ&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; INLJ&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; BNLJ<br>\u5916\u8868\u626b\u63cf\u6b21\u6570\uff1a1&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; 1&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;1<br>\u5185\u8868\u626b\u63cf\u6b21\u6570\uff1aA&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;0&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; A *used_column_size\/join_buffer_size+1<br>\u8bfb\u53d6\u8bb0\u5f55\u6570\uff1aA+B*A&nbsp; &nbsp; &nbsp; A+B(match)&nbsp; &nbsp; &nbsp; &nbsp; A+B*(A *used_column_size\/join_buffer_size)<br>JOIN\u6bd4\u8f83\u6b21\u6570\uff1aB*A&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;A *Index(Height)&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;B*A<br>\u56de\u8868\u8bfb\u53d6\u8bb0\u5f55\u6b21\u6570\uff1a0&nbsp; &nbsp; &nbsp; &nbsp; B(match) (if possible)&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; 0<\/p>\n\n\n\n<blockquote class=\"wp-block-quote is-layout-flow wp-block-quote-is-layout-flow\">\n<p>&nbsp;A\u8868\u5168\u8868\u626b\u9762\u4e00\u8fb9,\u518d\u628a\u9700\u8981\u7528\u7684\u5e73\u5747\u5206\u7ed9join buffer,\u6709\u51e0\u4efd\u5c31\u662f\u51e0\u6b21+1\u6b21\u626b\u63cf<\/p>\n<\/blockquote>\n\n\n\n<p>\u53c2\u6570\u8bbe\u7f6e\uff1a<br>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; block_nested_loop<br>\u901a\u8fc7show variables like '%optimizer_switch%'\u67e5\u770bblock_nested_loop\u72b6\u6001\u3002\u9ed8\u8ba4\u662f\u5f00\u542f\u7684\u3002<br>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; join_buffer_size<br>\u9a71\u52a8\u8868\u80fd\u4e0d\u80fd\u4e00\u6b21\u52a0\u8f7d\u5b8c\uff0c\u8981\u770bjoinbuffer\u80fd\u4e0d\u80fd\u5b58\u50a8\u6240\u6709\u7684\u6570\u636e\uff0c\u9ed8\u8ba4\u60c5\u51b5\u4e0bjoin_buffer_size=256k\u3002join_buffer_size\u7684\u6700\u5927\u503c\u572832\u4f4d\u7cfb\u7edf\u53ef\u4ee5\u7533\u8bf74G\uff0c\u800c\u572864\u4f4d\u64cd\u505a\u7cfb\u7edf\u4e0b\u53ef\u4ee5\u7533\u8bf7\u5927\u4e8e4G\u7684JoinBuffer\u7a7a\u95f4\uff0864\u4f4dWindows\u9664\u5916\uff0c\u5176\u5927\u503c\u4f1a\u88ab\u622a\u65ad\u4e3a4GB\u5e76\u53d1\u51fa\u8b66\u544a\uff09\u3002<\/p>\n\n\n\n<blockquote class=\"wp-block-quote is-layout-flow wp-block-quote-is-layout-flow\">\n<p>1\u3001**\u6574\u4f53\u6548\u7387\u6bd4\u8f83\uff1aINLJ&gt;BNLJ&gt;SNLJ<br>2\u3001\u6c38\u8fdc\u7528\u5c0f\u7ed3\u679c\u96c6\u9a71\u52a8\u5927\u7ed3\u679c\u96c6\uff08\u5176\u672c\u8d28\u5c31\u662f\u51cf\u5c11\u5916\u5c42\u5faa\u73af\u7684\u6570\u636e\u6570\u91cf\uff09\uff08\u5c0f\u7684\u5ea6\u91cf\u5355\u4f4d\u6307\u7684\u662f\u8868\u884c\u6570\u6bcf\u884c\u5927\u5c0f)&nbsp; \u8fc7\u6ee4\u4e4b\u540e\u624d\u662f\u8981\u626b\u63cf\u8bfb\u53d6\u7684\u90e8\u5206<\/p>\n\n\n\n<p>3\u3001\u4e3a\u88ab\u9a71\u52a8\u8868\u5339\u914d\u7684\u6761\u4ef6\u589e\u52a0\u7d22\u5f15\uff08(\u51cf\u5c11\u5185\u5c42\u8868\u7684\u5faa\u73af\u5339\u914d\u6b21\u6570)<br>4\u3001\u589e\u5927joinbuffersize\u7684\u5927\u5c0f\uff08\u4e00\u6b21\u7f13\u5b58\u7684\u6570\u636e\u8d8a\u591a\uff0c\u90a3\u4e48\u5185\u5c42\u5305\u7684\u626b\u8868\u6b21\u6570\u5c31\u8d8a\u5c11\uff09<br>5\u3001\u51cf\u5c11\u9a71\u52a8\u8868\u4e0d\u5fc5\u8981\u7684\u5b57\u6bb5\u67e5\u8be2\uff08\u5b57\u6bb5\u8d8a\u5c11\uff0cjoinbuffer\u6240\u7f13\u5b58\u7684\u6570\u636e\u5c31\u8d8a\u591a\uff09<\/p>\n<\/blockquote>\n\n\n\n<h4 class=\"wp-block-heading\">&nbsp;6.Hash Join<\/h4>\n\n\n\n<p><strong>\u4eceMySQL\u76848.0.20\u7248\u672c\u5f00\u59cb\u5c06\u5e9f\u5f03BNLJ\uff0c\u56e0\u4e3a\u4eceMySQL8.0.18\u7248\u672c\u5f00\u59cb\u5c31\u52a0\u5165\u4e86hashjoin\u9ed8\u8ba4\u90fd\u4f1a\u4f7f\u7528hashjoin<\/strong><\/p>\n\n\n\n<p><img loading=\"lazy\" decoding=\"async\" height=\"274\" width=\"807\" src=\"https:\/\/i-blog.csdnimg.cn\/direct\/3086f38a36e74af88ab8ab234acafd69.png\" alt=\"\"><\/p>\n\n\n\n<h2 class=\"wp-block-heading\">4.\u5b50\u67e5\u8be2\u4f18\u5316<\/h2>\n\n\n\n<p>\u4e00\u4e2aSELECT\u8bed\u53e5\u7684\u6761\u4ef6\u3002\u5b50\u67e5\u8be2\u53ef\u4ee5\u4e00\u6b21\u6027\u5b8c\u6210\u5f88\u591a\u903b\u8f91\u4e0a\u9700\u8981\u591a\u4e2a\u6b65\u9aa4\u624d\u80fd\u5b8c\u6210\u7684SQL\u64cd\u4f5c\u3002<br>\u5b50\u67e5\u8be2\u662fMySQL\u7684\u4e00\u9879\u91cd\u8981\u7684\u529f\u80fd\uff0c\u53ef\u4ee5\u5e2e\u52a9\u6211\u4eec\u901a\u8fc7\u4e00\u4e2aSQL\u8bed\u53e5\u5b9e\u73b0\u6bd4\u8f83\u590d\u6742\u7684\u67e5\u8be2\u3002\u4f46\u662f\uff0c\u5b50\u67e5\u8be2\u7684\u6267\u884c\u6548\u7387\u4e0d\u9ad8\u3002\u539f\u56e0\uff1a<\/p>\n\n\n\n<p>\u2460\u6267\u884c\u5b50\u67e5\u8be2\u65f6\uff0cMySQL\u9700\u8981\u4e3a\u5185\u5c42\u67e5\u8be2\u8bed\u53e5\u7684\u67e5\u8be2\u7ed3\u679c\u5efa\u7acb\u4e00\u4e2a\u4e34\u65f6\u8868\uff0c\u7136\u540e\u5916\u5c42\u67e5\u8be2\u8bed\u53e5\u4ece\u4e34\u65f6\u8868\u4e2d\u67e5\u8be2\u8bb0\u5f55\u3002\u67e5\u8be2\u5b8c\u6bd5\u540e\uff0c\u518d\u64a4\u9500\u8fd9\u4e9b\u4e34\u65f6\u8868\u3002\u8fd9\u6837\u4f1a\u6d88\u8017\u8fc7\u591a\u7684CPU\u548cIO\u8d44\u6e90\uff0c\u4ea7\u751f\u5927\u91cf\u7684\u6162\u67e5\u8be2\u3002<br>\u2461\u5b50\u67e5\u8be2\u7684\u7ed3\u679c\u96c6\u5b58\u50a8\u7684\u4e34\u65f6\u8868\uff0c\u4e0d\u8bba\u662f\u5185\u5b58\u4e34\u65f6\u8868\u8fd8\u662f\u78c1\u76d8\u4e34\u65f6\u8868\u90fd\u4e0d\u4f1a\u5b58\u5728\u7d22\u5f15\uff0c\u6240\u4ee5\u67e5\u8be2\u6027\u80fd\u4f1a\u53d7\u5230\u4e00\u5b9a\u7684\u5f71\u54cd\u3002<br>\u2462\u5bf9\u4e8e\u8fd4\u56de\u7ed3\u679c\u96c6\u6bd4\u8f83\u5927\u7684\u5b50\u67e5\u8be2\uff0c\u5176\u5bf9\u67e5\u8be2\u6027\u80fd\u7684\u5f71\u54cd\u4e5f\u5c31\u8d8a\u5927\u3002<\/p>\n\n\n\n<p><strong>&nbsp;\u4e0d\u5efa\u8bae\u4f7f\u7528\u5b50\u67e5\u8be2\uff0c\u5efa\u8bae\u5c06\u5b50\u67e5\u8be2SQL\u62c6\u5f00\u7ed3\u5408\u7a0b\u5e8f\u591a\u6b21\u67e5\u8be2\uff0c\u6216\u4f7f\u7528JOIN\u6765\u4ee3\u66ff\u5b50\u67e5\u8be2\u3002<\/strong><\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>#4. \u5b50\u67e5\u8be2\u7684\u4f18\u5316\n\n#\u521b\u5efa\u73ed\u7ea7\u8868\u4e2d\u73ed\u957f\u7684\u7d22\u5f15\nCREATE INDEX idx_monitor ON class(monitor);\n\n#\u67e5\u8be2\u73ed\u957f\u7684\u4fe1\u606f\nEXPLAIN SELECT * FROM student stu1\nWHERE stu1.`stuno` IN (\nSELECT monitor\nFROM class c\nWHERE monitor IS NOT NULL\n);\n\n--is not null \u4e0d\u4e00\u5b9a\u4f1a\u5bfc\u81f4\u7d22\u5f15\u5931\u6548\uff0c\u662fis not null \u7684\u6570\u636e\u592a\u591a\u4e86\u56de\u8868\u7684\u6b21\u6570\u592a\u591a\uff0c\n--\u6570\u636e\u91cf\u592a\u5927\uff0c\u6210\u672c\u592a\u9ad8\u7684\u60c5\u51b5\uff0c\u67e5\u8be2\u4f18\u5316\u5668\u4f1a\u5f3a\u5236\u6267\u884c\u5168\u8868\u626b\u63cf\n\nEXPLAIN SELECT stu1.* FROM student stu1 JOIN class c \nON stu1.`stuno` = c.`monitor`\nWHERE c.`monitor` IS NOT NULL;<\/code><\/pre>\n\n\n\n<pre class=\"wp-block-code\"><code>#\u67e5\u8be2\u4e0d\u4e3a\u73ed\u957f\u7684\u5b66\u751f\u4fe1\u606f\nEXPLAIN SELECT SQL_NO_CACHE a.* \nFROM student a \nWHERE  a.stuno  NOT  IN (\n\t\t\tSELECT monitor FROM class b \n\t\t\tWHERE monitor IS NOT NULL) \n\n\nEXPLAIN SELECT SQL_NO_CACHE a.*\nFROM  student a LEFT OUTER JOIN class b \nON a.stuno =b.monitor\nWHERE b.monitor IS NULL;\n\n\u8fd9\u91cc\u7c7b\u4f3c\u4e00\u4e2a\u5c0f\u516c\u5f0f\uff0cnot in\u91cc\u9762\uff0c\u90a3\u5c31is null\n\u5c3d\u91cf\u4e0d\u8981\u4f7f\u7528NOTIN\u6216\u8005NOTEXISTS\uff0c\u7528LEIT JOIN xXX ON xx WHERE xx IS NULL\u66ff\u4ee3<\/code><\/pre>\n\n\n\n<h2 class=\"wp-block-heading\">5.\u6392\u5e8f\u4f18\u5316<\/h2>\n\n\n\n<p>\u95ee\u9898\uff1a\u5728WHERE\u6761\u4ef6\u5b57\u6bb5\u4e0a\u52a0\u7d22\u5f15\uff0c\u4f46\u662f\u4e3a\u4ec0\u4e48\u5728ORDERBY\u5b57\u6bb5\u4e0a\u8fd8\u8981\u52a0\u7d22\u5f15\u5462\uff1f<br>\u56de\u7b54\uff1a<br>\u5728MySQL\u4e2d\uff0c\u652f\u6301\u4e24\u79cd\u6392\u5e8f\u65b9\u5f0f\uff0c\u5206\u522b\u662fFileSort \u548cIndex\u6392\u5e8f\u3002<br>\u00b7Index\u6392\u5e8f\u4e2d\uff0c\u7d22\u5f15\u53ef\u4ee5\u4fdd\u8bc1\u6570\u636e\u7684\u6709\u5e8f\u6027\uff0c\u4e0d\u9700\u8981\u518d\u8fdb\u884c\u6392\u5e8f\uff0c\u6548\u7387\u66f4\u9ad8\u3002<br>\u00b7FileSort\u6392\u5e8f\u5219\u4e00\u822c\u5728\u5185\u5b58\u4e2d\u8fdb\u884c\u6392\u5e8f\uff0c\u5360\u7528CPU\u8f83\u591a\u3002\u5982\u679c\u5f85\u6392\u7ed3\u679c\u8f83\u5927\uff0c\u4f1a\u4ea7\u751f\u4e34\u65f6\u6587\u4ef6I\/O\u5230\u78c1\u76d8\u8fdb\u884c\u6392\u5e8f\u7684\u60c5\u51b5\uff0c\u6548\u7387\u8f83\u4f4e\u3002<\/p>\n\n\n\n<p>\u4f18\u5316\u5efa\u8bae\uff1a<br>1.SQL\u4e2d\uff0c\u53ef\u4ee5\u5728WHERE\u5b50\u53e5\u548cORDER BY\u5b50\u53e5\u4e2d\u4f7f\u7528\u7d22\u5f15\uff0c\u76ee\u7684\u662f\u5728WHERE\u5b50\u53e5\u4e2d\u907f\u514d\u5168\u8868\u626b\u63cf\uff0c\u5728ORDER BY\u5b50\u53e5<strong>\u907f\u514d\u4f7f\u7528FileSort<\/strong>\u6392\u5e8f\u3002\u5f53\u7136\uff0c\u67d0\u4e9b\u60c5\u51b5\u4e0b\u5168\u8868\u626b\u63cf\uff0c\u6216\u8005FileSort\u6392\u5e8f\u4e0d\u4e00\u5b9a\u6bd4\u7d22\u5f15\u6162\u3002\u4f46\u603b\u7684\u6765\u8bf4\uff0c\u6211\u4eec\u8fd8\u662f\u8981\u907f\u514d\uff0c\u4ee5\u63d0\u9ad8\u67e5\u8be2\u6548\u7387\u3002<br>2.\u5c3d\u91cf\u4f7f\u7528Index\u5b8c\u6210ORDERBY\u6392\u5e8f\u3002\u5982\u679cWHERE\u548cORDERBY\u540e\u9762\u662f\u76f8\u540c\u7684\u5217\u5c31\u4f7f\u7528\u5355\u7d22\u5f15\u5217\uff1b\u5982\u679c\u4e0d\u540c\u5c31\u4f7f\u7528\u8054\u5408\u7d22\u5f15\u3002<br>3.\u65e0\u6cd5\u4f7f\u7528Index\u65f6\uff0c\u9700\u8981\u5bf9FileSort\u65b9\u5f0f\u8fdb\u884c\u8c03\u4f18\u3002<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>#5. \u6392\u5e8f\u4f18\u5316\n#\u5220\u9664student\u548cclass\u8868\u4e2d\u7684\u975e\u4e3b\u952e\u7d22\u5f15\nCALL proc_drop_index('atguigudb2','student');\nCALL proc_drop_index('atguigudb2','class');\n\nSHOW INDEX FROM student;\nSHOW INDEX FROM class;<\/code><\/pre>\n\n\n\n<pre class=\"wp-block-code\"><code>#\u8fc7\u7a0b\u4e00\uff1a\nEXPLAIN SELECT SQL_NO_CACHE * FROM student ORDER BY age,classid; \n\nEXPLAIN SELECT SQL_NO_CACHE * FROM student ORDER BY age,classid LIMIT 10; \n\n#\u8fc7\u7a0b\u4e8c\uff1aorder by\u65f6\u4e0dlimit\uff0c\u7d22\u5f15\u5931\u6548\n#\u521b\u5efa\u7d22\u5f15  \nCREATE  INDEX idx_age_classid_name ON student (age,classid,NAME);--\u8fd9\u65f6\u5019\u6211\u4eec\n\u5728student\u8868\u4e2d\u9488\u5bf9\u4e8eage\uff0cclassid\u548cname\u5efa\u7acb\u4e86\u4e00\u4e2a\u8054\u5408\u7d22\u5f15\uff0c\n\n#\u4e0d\u9650\u5236,\u7d22\u5f15\u5931\u6548\nEXPLAIN  SELECT SQL_NO_CACHE * FROM student ORDER BY age,classid; \n\u5230\u5e95\u6709\u6ca1\u6709\u7528\u7d22\u5f15\uff1f\u4e0d\u597d\u8bf4\uff0c\u5982\u679c\u7528\u4e86\uff0c\u5c31\u662f\u4e0a\u9762\u90a3\u4e2a\u8054\u5408\u7d22\u5f15\uff0c\u5f53\u6570\u636e\u91cf\u5927\u7684\u65f6\u5019\uff0c\u4ed6\u8fd9\u6837\u4e00\u4e2a\n\u4e8c\u7ea7\u7d22\u5f15\uff0c\u4e00\u76f4\u540e\u8fd8\u8981\u56de\u8868\u627e\u627e\u4e3b\u8868\u4e2d\u7684\u805a\u7c07\u7d22\u5f15\uff0c\u6bcf\u4e00\u6761\u6570\u636e\u8fd8\u5f97\u627e\u5230\u53f6\u5b50\u8282\u70b9\uff0c\n\u7ed3\u679c\u5c31\u662f\u6570\u636e\u91cf\u592a\u5927\uff0c\u56de\u8868\u64cd\u4f5c\u592a\u591a\uff0c\u4e8e\u662f\u5e72\u8106\u76f4\u63a5\u628a\u6570\u636e\u52a0\u8f7d\u8fdb\u6765\uff0c\u76f4\u63a5\u770b\u65f6\u95f4\u53cd\u800c\u5c11\u4e00\u4e9b\n\n#EXPLAIN  SELECT SQL_NO_CACHE age,classid,name,id FROM student ORDER BY age,classid; \n\u6b64\u65f6\u53cd\u800c\u7528\u4e86\u7d22\u5f15\uff0c\u8fd9\u662f\u56e0\u4e3a\u6211\u4eec\u6ca1\u6709\u56de\u8868\uff0c\u5f15\u51fa\u8986\u76d6\u7d22\u5f15<\/code><\/pre>\n\n\n\n<pre class=\"wp-block-code\"><code>#\u589e\u52a0limit\u8fc7\u6ee4\u6761\u4ef6\uff0c\u4f7f\u7528\u4e0a\u7d22\u5f15\u4e86\u3002\nEXPLAIN  SELECT SQL_NO_CACHE * FROM student ORDER BY age,classid LIMIT 10;\n\u7531\u4e8e\u4f60\u53ea\u8981\u5341\u6761\u6570\u636e\uff0c\u90a3\u4e48\u76f4\u63a5\u6392\u5e8f\u53d6\u524d\u5341\u6761\u5373\u53ef  <\/code><\/pre>\n\n\n\n<pre class=\"wp-block-code\"><code>#\u8fc7\u7a0b\u4e09\uff1aorder by\u65f6\u987a\u5e8f\u9519\u8bef\uff0c\u7d22\u5f15\u5931\u6548\n\n#\u521b\u5efa\u7d22\u5f15age,classid,stuno\nCREATE  INDEX idx_age_classid_stuno ON student (age,classid,stuno); \n\n#\u4ee5\u4e0b\u54ea\u4e9b\u7d22\u5f15\u5931\u6548?\nEXPLAIN  SELECT * FROM student ORDER BY classid LIMIT 10;          --NO\n\nEXPLAIN  SELECT * FROM student ORDER BY classid,NAME LIMIT 10;     --no\n\nEXPLAIN  SELECT * FROM student ORDER BY age,classid,stuno LIMIT 10; --YES\n\u9996\u5148age\u662f\u5141\u8bb8\u4e3anull\u7684\uff0c\u56e0\u6b64\u5360\u75285\u5b57\u8282\uff0cclassid\u4e5f\u662f5\u4e2a\uff0cstuno\u4e0d\u80fdnull\u662f4\u4e2a\u5b57\u8282\uff0c\n\u56e0\u6b64key_len\u5c31\u662f14\n\nEXPLAIN  SELECT * FROM student ORDER BY age,classid LIMIT 10;      --yes\nidx_age_classid_name        \u56e0\u6b64len\u662f73\n\nEXPLAIN  SELECT * FROM student ORDER BY age LIMIT 10;              --yes<\/code><\/pre>\n\n\n\n<pre class=\"wp-block-code\"><code>#\u8fc7\u7a0b\u56db\uff1aorder by\u65f6\u89c4\u5219\u4e0d\u4e00\u81f4, \u7d22\u5f15\u5931\u6548 \uff08\u987a\u5e8f\u9519\uff0c\u4e0d\u7d22\u5f15\uff1b\u65b9\u5411\u53cd\uff0c\u4e0d\u7d22\u5f15\uff09\n\nEXPLAIN  SELECT * FROM student ORDER BY age DESC, classid ASC LIMIT 10;\n\u4e3b\u8981\u539f\u56e0\u662fage\u662f\u964d\u5e8f\u6392\u7684,\n\nEXPLAIN  SELECT * FROM student ORDER BY classid DESC, NAME DESC LIMIT 10;--no\n\nEXPLAIN  SELECT * FROM student ORDER BY age ASC,classid DESC LIMIT 10; --no\n\u4e3b\u8981\u662fage asc\u662f\u5347\u5e8f\u7684,\u4f46\u662fclassid\u53c8\u53d8\u6210\u964d\u5e8f\u4e86\n\nEXPLAIN  SELECT * FROM student ORDER BY age DESC, classid DESC LIMIT 10;--<\/code><\/pre>\n\n\n\n<pre class=\"wp-block-code\"><code>#\u8fc7\u7a0b\u4e94\uff1a\u65e0\u8fc7\u6ee4\uff0c\u4e0d\u7d22\u5f15\n\nEXPLAIN  SELECT * FROM student WHERE age=45 ORDER BY classid;\n\nEXPLAIN  SELECT * FROM student WHERE  age=45 ORDER BY classid,NAME; \n\u611f\u89c9\u8fd9\u91cc\u662f5\u662f\u56e0\u4e3aage\u9650\u5236\u540e\uff0cclassid\u5df2\u7ecf\u6709\u5e8f\u4e86\uff0c\u76f4\u63a5\u5c31\u56de\u8868\u4e86\uff0c\u8981\u4e0d\u7136\u6392\u5e8f\u7684\u8bdd\u4f9d\u7136\u4f1a\n\u6709extra\u4fe1\u606f\u7684\n\nEXPLAIN  SELECT * FROM student WHERE  classid=45 ORDER BY age;\n\nEXPLAIN  SELECT * FROM student WHERE  classid=45 ORDER BY age LIMIT 10;\n\nCREATE INDEX idx_cid ON student(classid);\nEXPLAIN  SELECT * FROM student WHERE  classid=45 ORDER BY age;\n#\u524d\u9762\u8bf4\u5148\u8fc7\u6ee4\u518d\u6392\u5e8f\uff0c\u6027\u80fd\u80af\u5b9a\u597d\u4e00\u5b9a\uff0c\u6bd5\u7adf\u907f\u514d\u4e86\u65e0\u6548\u7684\u6570\u636e\u90fd\u6392\u5e8f\u4e86\u4e00\u4e2a\u904d<\/code><\/pre>\n\n\n\n<p>\u00a0<img loading=\"lazy\" decoding=\"async\" height=\"490\" width=\"612\" src=\"https:\/\/i-blog.csdnimg.cn\/direct\/f48f7a7f28a245018957f62bad472f8b.png\" alt=\"\"><\/p>\n\n\n\n<p><a href=\"https:\/\/www.bilibili.com\/video\/BV1iq4y1u7vj?t=1894.1&amp;p=145\" target=\"_blank\"  rel=\"nofollow\" >145-\u5b50\u67e5\u8be2\u4f18\u5316\u4e0e\u6392\u5e8f\u4f18\u5316_\u54d4\u54e9\u54d4\u54e9_bilibili<\/a>&nbsp;\u771f\u542c\u4e0d\u4e0b\u53bb\u4e86,\u4e91\u91cc\u96fe\u91cc\u7684<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>#\u5b9e\u6218\uff1a\u6d4b\u8bd5filesort\u548cindex\u6392\u5e8f\nCALL proc_drop_index('atguigudb2','student');\n\nEXPLAIN SELECT SQL_NO_CACHE * FROM student WHERE age = 30 AND stuno &lt;101000 ORDER BY NAME ;\n\n#\u65b9\u6848\u4e00: \u4e3a\u4e86\u53bb\u6389filesort\u6211\u4eec\u53ef\u4ee5\u628a\u7d22\u5f15\u5efa\u6210\n\nCREATE INDEX idx_age_name ON student(age,NAME);\n\nEXPLAIN SELECT SQL_NO_CACHE * FROM student WHERE age = 30 AND stuno &lt;101000 ORDER BY NAME ;\n\n#\u65b9\u6848\u4e8c\uff1a\n\nCREATE INDEX idx_age_stuno_name ON student(age,stuno,NAME);\n\nEXPLAIN SELECT SQL_NO_CACHE * FROM student WHERE age = 30 AND stuno &lt;101000 ORDER BY NAME ;\n\nDROP INDEX idx_age_stuno_name ON student;\n\nCREATE INDEX idx_age_stuno ON student(age,stuno);<\/code><\/pre>\n\n\n\n<h2 class=\"wp-block-heading\">6.GROUP BY\u4f18\u5316<\/h2>\n\n\n\n<ol class=\"wp-block-list\">\n<li>groupby\u4f7f\u7528\u7d22\u5f15\u7684\u539f\u5219\u51e0\u4e4e\u8ddforderby\u4e00\u81f4\uff0c<strong>groupby\u5373\u4f7f\u6ca1\u6709\u8fc7\u6ee4\u6761\u4ef6\u7528\u5230\u7d22\u5f15<\/strong>\uff0c\u4e5f\u53ef\u4ee5\u76f4\u63a5\u4f7f\u7528\u7d22\u5f15\u3002<\/li>\n\n\n\n<li>groupby\u5148\u6392\u5e8f\u518d\u5206\u7ec4\uff0c\u9075\u7167\u7d22\u5f15\u5efa\u7684\u6700\u4f73\u5de6\u524d\u7f00\u6cd5\u5219<\/li>\n\n\n\n<li>\u5f53\u65e0\u6cd5\u4f7f\u7528\u7d22\u5f15l\u5217\uff0c\u589e\u5927max_length_for_sort_data\u548csort_buffer_size\u53c2\u6570\u7684\u8bbe\u7f6e<\/li>\n\n\n\n<li>where\u6548\u7387\u9ad8\u4e8ehaving\uff0c\u80fd\u5199\u5728where\u9650\u5b9a\u7684\u6761\u4ef6\u5c31\u4e0d\u8981\u5199\u5728having\u4e2d\u4e86<\/li>\n\n\n\n<li>\u51cf\u5c11\u4f7f\u7528orderby\uff0c\u548c\u4e1a\u52a1\u6c9f\u901a\u80fd\u4e0d\u6392\u5e8f\u5c31\u4e0d\u6392\u5e8f\uff0c\u6216\u5c06\u6392\u5e8f\u653e\u5230\u7a0b\u5e8f\u7aef\u53bb\u505a\u3002Orderby\u3001group by\u3001distinct.\u8fd9\u4e9b\u8bed\u53e5\u8f83\u4e3a\u8017\u8d39CPU\uff0c\u6570\u636e\u5e93\u7684CPU\u8d44\u6e90\u662f\u6781\u5176\u5b9d\u8d35\u7684\u3002<\/li>\n\n\n\n<li>\u5305\u542b\u4e86order by\u3001group by\u3001distinct\u8fd9\u4e9b\u67e5\u8be2\u7684\u8bed\u53e5\uff0cwhere\u6761\u4ef6\u8fc7\u6ee4\u51fa\u6765\u7684\u7ed3\u679c\u96c6\u8bf7\u4fdd\u6301\u57281ooo\u884c\u4ee5\u5185\uff0c\u5426\u5219SQL\u4f1a\u5f88\u6162\u3002<\/li>\n<\/ol>\n\n\n\n<h2 class=\"wp-block-heading\">&nbsp;7.\u4f18\u5316\u5206\u9875\u67e5\u8be2<\/h2>\n\n\n\n<p>\u4e00\u822c\u5206\u9875\u67e5\u8be2\u65f6\uff0c\u901a\u8fc7\u521b\u5efa\u8986\u76d6\u7d22\u5f15\u80fd\u591f\u6bd4\u8f83\u597d\u5730\u63d0\u9ad8\u6027\u80fd\u3002\u4e00\u4e2a\u5e38\u89c1\u53c8\u975e\u5e38\u5934\u75bc\u7684\u95ee\u9898\u5c31\u662flimit 2000000,10\uff0c\u6b64\u65f6\u9700\u8981MySQL\u6392\u5e8f\u524d2000010\u8bb0\u5f55\uff0c\u4ec5\u4ec5\u8fd4\u56de2000000-2000010\u7684\u8bb0\u5f55\uff0c\u5176\u4ed6\u8bb0\u5f55\u4e22\u5f03\uff0c\u67e5\u8be2\u6392\u5e8f\u7684\u4ee3\u4ef7\u975e\u5e38\u5927\u3002<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>EXPLAIN SELECT + FROM student LIMIT 2000000,10;<\/code><\/pre>\n\n\n\n<p><img loading=\"lazy\" decoding=\"async\" height=\"519\" width=\"682\" src=\"https:\/\/i-blog.csdnimg.cn\/direct\/30e09dcb7d364841b497c9b80615d60a.png\" alt=\"\"><\/p>\n\n\n\n<h2 class=\"wp-block-heading\">&nbsp;8.\u4f18\u5148\u8003\u8651\u8986\u76d6\u7d22\u5f15<\/h2>\n\n\n\n<h3 class=\"wp-block-heading\">8.1\u4ec0\u4e48\u662f\u8986\u76d6\u7d22\u5f15\uff1f<\/h3>\n\n\n\n<p>\u7406\u89e3\u65b9\u5f0f\u4e00\uff1a\u7d22\u5f15\u662f\u9ad8\u6548\u627e\u5230\u884c\u7684\u4e00\u4e2a\u65b9\u6cd5\uff0c\u4f46\u662f\u4e00\u822c\u6570\u636e\u5e93\u4e5f\u80fd\u4f7f\u7528\u7d22\u5f15\u627e\u5230\u4e00\u4e2a\u5217\u7684\u6570\u636e\uff0c\u56e0\u6b64\u5b83\u4e0d\u5fc5\u8bfb\u53d6\u6574\u4e2a\u884c\u3002\u6bd5\u7adf\u7d22\u5f15\u53f6\u5b50\u8282\u70b9\u5b58\u50a8\u4e86\u5b83\u4eec\u7d22\u5f15\u7684\u6570\u636e\uff1b\u5f53\u80fd\u901a\u8fc7\u8bfb\u53d6\u7d22\u5f15\u5c31\u53ef\u4ee5\u5f97\u5230\u60f3\u8981\u7684\u6570\u636e\uff0c\u90a3\u5c31\u4e0d\u9700\u8981\u8bfb\u53d6\u884c\u4e86\u3002<strong>\u4e00\u4e2a\u7d22\u5f15\u5305\u542b\u4e86\u6ee1\u8db3\u67e5\u8be2\u7ed3\u679c\u7684\u6570\u636e\u5c31\u53eb\u505a\u8986\u76d6\u7d22\u5f15\u3002<\/strong><\/p>\n\n\n\n<p>\u7406\u89e3\u65b9\u5f0f\u4e8c\uff1a<strong>\u975e\u805a\u7c07\u590d\u5408\u7d22\u5f15 \u7684\u4e00\u79cd\u5f62\u5f0f\uff0c\u5b83\u5305\u62ec\u5728\u67e5\u8be2\u91cc\u7684SELECT\u3001JOIN\u548cWHERE\u5b50\u53e5\u7528\u5230\u7684\u6240\u6709\u5217\uff08\u5373\u5efa\u7d22\u5f15\u7684\u5b57\u6bb5\u6b63\u597d\u662f\u8986\u76d6\u67e5\u8be2\u6761\u4ef6\u4e2d\u6240\u6d89\u53ca\u7684\u5b57\u6bb5\uff09\u3002<\/strong><\/p>\n\n\n\n<p><strong>\u7b80\u5355\u8bf4\u5c31\u662f\uff0c\u7d22\u5f15\u5217+\u4e3b\u952e\u5305\u542bSELECT\u5230FROM\u4e4b\u95f4\u67e5\u8be2\u7684\u5217\u3002<\/strong><\/p>\n\n\n\n<p>&nbsp;\u6bd4\u5982\u8bf4\u4e0a\u9762\u8fc7\u7a0b\u4e8c\u4e2d\u589e\u52a0limit\u8fc7\u6ee4\u6761\u4ef6\uff0c\u8fd9\u4e00\u53e5<br>EXPLAINNSELECT SQL_NO_CACHE * FROM Student QRDER BY age,claSSid LIMIT 10;<\/p>\n\n\n\n<p>\u4e5f\u6709\u7d22\u5f15idx_age_classid_name&nbsp;<\/p>\n\n\n\n<p>\u6211\u4eec\u73b0\u5728C1C2C3\u4e09\u4e2a\u5b57\u6bb5,C1\u662f\u4e3b\u952e,\u4e3aC2\u5efa\u7acb\u4e00\u4e2a\u666e\u901a\u7684\u4e8c\u7ea7\u7d22\u5f15,\u8986\u76d6\u7d22\u5f15\u53f6\u5b50\u8282\u70b9\u5b58\u5f97\u662f\u6570\u636e\uff0c\u975e\u8986\u76d6\u7d22\u5f15\u53f6\u5b50\u8282\u70b9\u5b58\u7684\u662f\u7d22\u5f15\u5b57\u6bb5\u548c\u4e3b\u952e<\/p>\n\n\n\n<p>C1\u5b57\u6bb5 \u5bf9\u5e94\u7684\u9875\u7801,\u5230\u4e0b\u9762\u53f6\u5b50\u8282\u70b9\u4f1a\u4fdd\u7559\u4ed6\u7d22\u5f15\u7684\u5b57\u6bb5,\u4ee5\u53ca\u4e3b\u952e\u7684\u5b57\u6bb5\u503c ,\u00a0<a href=\"https:\/\/www.bilibili.com\/video\/BV1iq4y1u7vj?t=200.3&amp;p=147\" target=\"_blank\"  rel=\"nofollow\" >147-\u8986\u76d6\u7d22\u5f15\u7684\u4f7f\u7528_\u54d4\u54e9\u54d4\u54e9_bilibili<\/a>----6.07<img loading=\"lazy\" decoding=\"async\" height=\"335\" width=\"682\" src=\"https:\/\/i-blog.csdnimg.cn\/direct\/6ba8b083fda347069815f8417bbcbdab.png\" alt=\"\"><img loading=\"lazy\" decoding=\"async\" height=\"15\" width=\"15\" src=\"blob:https:\/\/eve2333.top\/051fbbce-1b8f-49ac-9041-71ec3ea2f003\"><\/p>\n\n\n\n<p>&nbsp;148,149,150\u597d\u6f2b\u957f\u4e0d\u60f3\u770b \u200b<\/p>\n","protected":false},"excerpt":{"rendered":"<p>&nbsp;\u7b2c10\u7ae0_\u7d22\u5f15\u4f18\u5316\u4e0e\u67e5\u8be2\u4f18\u5316 \u867d\u7136SQL\u67e5\u8be2\u4f18\u5316\u7684\u6280\u672f\u6709\u5f88\u591a\uff0c\u4f46\u662f\u5927\u65b9\u5411\u4e0a\u5b8c\u5168\u53ef\u4ee5\u5206\u6210\u7269\u7406\u67e5\u8be2\u4f18\u5316\u548c\u903b\u8f91\u67e5\u8be2\u4f18\u5316\u4e24\u5927\u5757 &#8230;<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"emotion":"","emotion_color":"","title_style":"","license":"","footnotes":""},"categories":[2],"tags":[16],"class_list":["post-911","post","type-post","status-publish","format-standard","hentry","category-2","tag-sql"],"_links":{"self":[{"href":"https:\/\/eve2333.top\/index.php?rest_route=\/wp\/v2\/posts\/911","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/eve2333.top\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/eve2333.top\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/eve2333.top\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/eve2333.top\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=911"}],"version-history":[{"count":1,"href":"https:\/\/eve2333.top\/index.php?rest_route=\/wp\/v2\/posts\/911\/revisions"}],"predecessor-version":[{"id":912,"href":"https:\/\/eve2333.top\/index.php?rest_route=\/wp\/v2\/posts\/911\/revisions\/912"}],"wp:attachment":[{"href":"https:\/\/eve2333.top\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=911"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/eve2333.top\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=911"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/eve2333.top\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=911"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}