{"id":217,"date":"2020-10-05T08:04:15","date_gmt":"2020-10-05T08:04:15","guid":{"rendered":"https:\/\/turtleflyblog.com\/?p=217"},"modified":"2022-02-28T09:46:30","modified_gmt":"2022-02-28T09:46:30","slug":"sql-peformance","status":"publish","type":"post","link":"https:\/\/turtleflyblog.com\/zh\/2020\/10\/05\/sql-peformance\/","title":{"rendered":"\u6539\u5584SQL\u6548\u80fd"},"content":{"rendered":"\n
SQL\u7684\u6548\u80fd\u5fae\u8abf\u6c38\u9060\u662fDB\u5de5\u7a0b\u5e2b\u4e00\u76f4\u9762\u5c0d\u7684\u8ab2\u984c\u3002\u672c\u7bc7\u5c07\u4ecb\u7d39\u4e94\u9ede\u63d0\u5347SQL\u6548\u80fd\u7684\u65b9\u6cd5\uff0c\u5e0c\u671b\u5c0d\u8b80\u8005\u6709\u5e6b\u52a9<\/p>\n\n\n\n
1.<\/strong>\u82e5\u5b50\u67e5\u8a62\u70ba\u53c3\u6578\uff0c\u4f7f\u7528EXISTS\u4ee3\u66ffIN<\/strong><\/p>\n\n\n\n IN\u8ff0\u8a5e\u5f88\u65b9\u4fbf\uff0c\u4f46\u5982\u679c\u662f\u4ee5\u5b50\u67e5\u8a62\u70ba\u53c3\u6578\uff0c\u5c31\u5efa\u8b70\u7528EXISTS\u3002\u56e0\u70baEXISTS\u901a\u5e38\u80fd\u8207IN\u8ff0\u8a5e\u50b3\u56de\u76f8\u540c\u7684\u7d50\u679c\uff0c\u4f46\u662f\u5efa\u7acb\u5b50\u67e5\u8a62\u537b\u5feb\u5f97\u591a<\/p>\n\n\n\n \u4f8b\u5b50<\/p>\n\n\n\n 1.\u4f7f\u7528IN<\/p>\n\n\n\n SELECT * FROM Class_A WHERE id IN (SELECT id FROM CLASS_B);<\/p>\n\n\n\n 2.\u4f7f\u7528EXISTS<\/p>\n\n\n\n SELECT * FROM CLASS_A A WHERE EXISTS<\/p>\n\n\n\n (SELECT * FROM Class_B B WHERE A.id=B.id);<\/p>\n\n\n\n EXISTS\u6703\u6bd4\u8f03\u5feb\u6709\u4ee5\u4e0b\u5169\u9ede<\/p>\n\n\n\n 2.<\/strong>\u907f\u958b\u6392\u5e8f<\/strong><\/p>\n\n\n\n \u4e8b\u5be6\u4e0aDBMS\u975e\u5e38\u983b\u7e41\u5730\u57f7\u884c\u6392\u5e8f\uff0c\u56e0\u6b64\u4f7f\u7528\u8005\u4e0d\u7528\u7406\u6703\u54ea\u7a2e\u904b\u7b97\u6b63\u5728\u57f7\u884c\u6392\u5e8f\u3002<\/p>\n\n\n\n \u4f8b\u5982UNION\uff0c\u5982\u679c\u4e0d\u7528\u5728\u4e4e\u91cd\u8907\u7684\u8cc7\u6599\u6216\u662f\u4e8b\u5148\u77e5\u9053\u4e0d\u6703\u6709\u91cd\u8907\u8cc7\u6599\uff0c\u53ef\u5229\u7528UNION ALL\u4ee3\u66ffUNION\uff0c\u907f\u514d\u57f7\u884c\u6392\u5e8f<\/p>\n\n\n\n \u4f8b\u5b50<\/p>\n\n\n\n 1.<\/p>\n\n\n\n SELECT * FROM CLASS_A<\/p>\n\n\n\n UNION<\/p>\n\n\n\n SELECT * FROM CLASS_B<\/p>\n\n\n\n 2.<\/p>\n\n\n\n SELECT * FROM CLASS_A<\/p>\n\n\n\n UNION ALL<\/p>\n\n\n\n SELECT * FROM CLASS_B<\/p>\n\n\n\n DISTINCT\u6703\u6392\u9664\u91cd\u8907\u8cc7\u6599\u3002\u82e5\u662f\u70ba\u4e86\u7d71\u6574\u5169\u5f35\u8cc7\u6599\u8868\u9023\u7d50\u7d50\u679c\uff0c\u5efa\u8b70\u53ef\u4f7f\u7528EXISTS\u4ee3\u66ffDISTINCT\uff0c\u907f\u514d\u57f7\u884c\u6392\u5e8f\u3002<\/p>\n\n\n\n \u4f8b\u5b50<\/p>\n\n\n\n 1.<\/p>\n\n\n\n SELECT DISTINCT I.item_no FROM Items I INNER JOIN SalesHistory SH ON I.item_no = SH.item_no;<\/p>\n\n\n\n 2.<\/p>\n\n\n\n SELECT item_no FROM Items I<\/p>\n\n\n\n WHERE EXISTS<\/p>\n\n\n\n (SELECT * FROM SalesHistory SH WHERE I.item_no=SH.item_no);<\/p>\n\n\n\n 3.(MAX\/MIN)<\/strong>\u4f7f\u7528\u7d22\u5f15\u503c<\/strong><\/p>\n\n\n\n MAX\u8207MIN\u9019\u5169\u7a2e\u6975\u503c\u51fd\u6578\uff0c\u4f7f\u7528\u6642\uff0c\u90fd\u6703\u9032\u884c\u6392\u5e8f\uff0c\u4f46\u5982\u679c\u53c3\u6578\u7684\u6b04\u4f4d\u5df2\u6709\u7d22\u5f15\u503c\uff0c\u5c31\u53ea\u9700\u8981\u6383\u63cf\u8a72\u7d22\u5f15\u503c\uff0c\u4e0d\u9700\u641c\u5c0b\u6574\u5f35\u8868\u683c<\/p>\n\n\n\n 4.<\/strong>\u5beb\u5728WHERE\u9673\u8ff0\u53e5\u7684\u689d\u4ef6\u4e0d\u5beb\u5728HAVING\u9673\u8ff0\u53e5<\/strong><\/p>\n\n\n\n \u4f8b\u5b50<\/p>\n\n\n\n 1.<\/p>\n\n\n\n SELECT sale_date, SUM(quantity) FROM SalesHistory<\/p>\n\n\n\n GROUP BY sale_date<\/p>\n\n\n\n HAVING sale_date = \u20182010-10-2\u2019;<\/p>\n\n\n\n 2.<\/p>\n\n\n\n SELECT sale_date, SUM(quantity) FROM SalesHistory<\/p>\n\n\n\n WHERE sale_date= \u20182010-10-2\u2019 GROUP BY sale_date<\/p>\n\n\n\n \u5df2\u4e0a\u4f8b\u5b50\uff0c\u4f8b\u5b50\u4e8c(WHERE)\u7684\u6548\u80fd\u8f03\u4f73\uff0c\u6709\u5169\u500b\u539f\u56e0\u3002\u7b2c\u4e00\u662f\u5728\u6b63\u5e38\u60c5\u6cc1\u4e0b\uff0cWHERE\u9673\u8ff0\u53e5\u53ef\u4f7f\u7528\u7d22\u5f15\u503c\u3002\u7b2c\u4e8c\u662fGROUP BY\u9673\u8ff0\u53e5\u57f7\u884c\u7684\u5f59\u6574\u6703\u9032\u884c\u6392\u5e8f\u8207\u96dc\u6e4a\u7684\u904b\u7b97\uff0c\u6240\u4ee5\u5148\u6e1b\u5c11\u5217\u6578\uff0c\u624d\u80fd\u6e1b\u8f15\u6392\u5e8f\u6642\u7684\u8ca0\u64d4\u3002HAVING\u9673\u8ff0\u53e5\u662f\u5c0d\u5f59\u6574\u5f8c\u7684\u8a66\u5716\u8a2d\u5b9a\u689d\u4ef6\uff0c\u4f46\u5f59\u6574\u5f8c\u7684\u8a66\u5716\u7121\u6cd5\u9023\u539f\u59cb\u8cc7\u6599\u8868\u7684\u7d22\u5f15\u503c\u4e00\u4f75\u7e7c\u627f<\/p>\n\n\n\n 5.<\/strong>\u6e1b\u5c11\u4e2d\u4ecb\u8cc7\u6599\u8868<\/strong><\/p>\n\n\n\n \u4e2d\u4ecb\u8cc7\u6599\u8868\u7684\u554f\u984c\u5728\u9700\u8981\u5927\u91cf\u8a18\u61b6\u9ad4\uff0c\u4e5f\u5f88\u96e3\u4f7f\u7528\u8cc7\u6599\u8868\u7684\u7d22\u5f15(\u5c24\u5176\u662f\u7d93\u904e\u5f59\u6574\u5f8c)\u3002\u6240\u4ee5\u76e1\u53ef\u80fd\u6e1b\u5c11\u4e2d\u4ecb\u8cc7\u6599\u8868\u53ef\u8aaa\u662f\u63d0\u5347\u6548\u80fd\u7684\u95dc\u9375\u9ede\u3002<\/p>\n\n\n\n \u5584\u7528HAVING\u9673\u8ff0\u53e5<\/p>\n\n\n\n SELECT * FROM(SELECT sale_date, MAX(quantity) AS max_qty FROM SalesHistroy<\/p>\n\n\n\n GROUP BY sale_date)TMP WHERE max_qty >= 10;<\/p>\n\n\n\n \u4e0d\u904e\u8981\u5c0d\u5f59\u6574\u7684\u7d50\u679c\u8a2d\u5b9a\u689d\u4ef6\uff0c\u662f\u4e0d\u9700\u8981\u5efa\u7acb\u591a\u9918\u7684\u4e2d\u4ecb\u8cc7\u6599\u8868\u7684\uff0c\u53ea\u8981\u4f7f\u7528\u4e0b\u5217HAVING\u9673\u8ff0\u53e5\u5373\u53ef<\/p>\n\n\n\n SELECT sale_date, MAX(quantity) FROM SalesHistory<\/p>\n\n\n\n GROUP BY sale_date HAVING MAX(quantity) >= 10<\/p>\n\n\n\n HAVING\u9673\u8ff0\u53e5\u6703\u4e00\u908a\u57f7\u884c\uff0c\u4e00\u908a\u9032\u884c\u5f59\u6574\uff0c\u6240\u4ee5\u6703\u6bd4\u5efa\u7acb\u4e2d\u4ecb\u8cc7\u6599\u8868\u4e4b\u5f8c\u624d\u57f7\u884cWHERE\u9673\u8ff0\u53e5\u66f4\u6709\u6548\u7387\uff0c\u800c\u4e14\u7a0b\u5f0f\u78bc\u4e5f\u6bd4\u8f03\u7c21\u6f54<\/p>\n\n\n\n \u76f8\u4fe1\u5df2\u4e0a\u4e94\u9ede\u53ef\u8981\u6548\u63d0\u5347SQL\u6548\u80fd\uff0c\u4f46\u6700\u91cd\u8981\u4e00\u9ede\u662f\u627e\u51fa\u74f6\u9838\uff0c\u7136\u5f8c\u512a\u5148\u89e3\u6c7a<\/em><\/strong>\u3002<\/p>\n","protected":false},"excerpt":{"rendered":" SQL\u7684\u6548\u80fd\u5fae\u8abf\u6c38\u9060\u662fDB\u5de5\u7a0b\u5e2b\u4e00\u76f4\u9762\u5c0d\u7684\u8ab2\u984c\u3002\u672c\u7bc7\u5c07\u4ecb\u7d39\u4e94\u9ede\u63d0\u5347SQL\u6548\u80fd\u7684\u65b9\u6cd5\uff0c\u5e0c\u671b\u5c0d\u8b80\u8005\u6709\u5e6b\u52a9 1.\u82e5\u5b50\u67e5\u8a62\u70ba\u53c3\u6578\uff0c\u4f7f\u7528EXISTS\u4ee3\u66ffIN IN\u8ff0\u8a5e\u5f88\u65b9\u4fbf\uff0c\u4f46\u5982\u679c\u662f\u4ee5\u5b50\u67e5\u8a62\u70ba\u53c3\u6578\uff0c\u5c31\u5efa\u8b70\u7528EXISTS\u3002\u56e0\u70baEXISTS\u901a\u5e38\u80fd\u8207IN\u8ff0\u8a5e\u50b3\u56de\u76f8\u540c\u7684\u7d50\u679c\uff0c\u4f46\u662f\u5efa\u7acb\u5b50\u67e5\u8a62\u537b\u5feb\u5f97\u591a \u4f8b\u5b50 1.\u4f7f\u7528IN SELECT * FROM Class_A WHERE id IN (SELECT id FROM CLASS_B); 2.\u4f7f\u7528EXISTS SELECT * FROM CLASS_A A WHERE EXISTS (SELECT * FROM Class_B B WHERE A.id=B.id); EXISTS\u6703\u6bd4\u8f03\u5feb\u6709\u4ee5\u4e0b\u5169\u9ede \u5982\u679c\u9023\u63a5id(key)\u5e36\u6709\u7d22\u5f15\u503c\uff0c\u5c31\u53ef\u76f4\u63a5\u53c3\u7167\u7d22\u5f15\u503c\uff0c\u4e0d\u9700\u89c0\u5bdfClass_B\u8cc7\u6599\u8868 EXISTS\u8207\u8981\u627e\u5230\u4e00\u7b46\u7b26\u5408\u689d\u4ef6\u7684\u5217\uff0c\u5c31\u6703\u505c\u6b62\u641c\u5c0b\uff0c\u800cIN\u5247\u6703\u5168\u9762\u641c\u5c0b\u4e00\u904d 2.\u907f\u958b\u6392\u5e8f \u4e8b\u5be6\u4e0aDBMS\u975e\u5e38\u983b\u7e41\u5730\u57f7\u884c\u6392\u5e8f\uff0c\u56e0\u6b64\u4f7f\u7528\u8005\u4e0d\u7528\u7406\u6703\u54ea\u7a2e\u904b\u7b97\u6b63\u5728\u57f7\u884c\u6392\u5e8f\u3002 \u5584\u7528\u96c6\u5408\u904b\u7b97\u5b57\u7684ALL\u9078\u9805 \u4f8b\u5982UNION\uff0c\u5982\u679c\u4e0d\u7528\u5728\u4e4e\u91cd\u8907\u7684\u8cc7\u6599\u6216\u662f\u4e8b\u5148\u77e5\u9053\u4e0d\u6703\u6709\u91cd\u8907\u8cc7\u6599\uff0c\u53ef\u5229\u7528UNION ALL\u4ee3\u66ffUNION\uff0c\u907f\u514d\u57f7\u884c\u6392\u5e8f \u4f8b\u5b50 1. SELECT * FROM CLASS_A UNION SELECT * FROM CLASS_B 2. SELECT * FROM CLASS_A […]<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"nf_dc_page":"","om_disable_all_campaigns":false,"_monsterinsights_skip_tracking":false,"_monsterinsights_sitenote_active":false,"_monsterinsights_sitenote_note":"","_monsterinsights_sitenote_category":0,"site-sidebar-layout":"default","site-content-layout":"","ast-site-content-layout":"","site-content-style":"default","site-sidebar-style":"default","ast-global-header-display":"","ast-banner-title-visibility":"","ast-main-header-display":"","ast-hfb-above-header-display":"","ast-hfb-below-header-display":"","ast-hfb-mobile-header-display":"","site-post-title":"","ast-breadcrumbs-content":"","ast-featured-img":"","footer-sml-layout":"","theme-transparent-header-meta":"","adv-header-id-meta":"","stick-header-meta":"","header-above-stick-meta":"","header-main-stick-meta":"","header-below-stick-meta":"","astra-migrate-meta-layouts":"default","ast-page-background-enabled":"default","ast-page-background-meta":{"desktop":{"background-color":"","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""},"tablet":{"background-color":"","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""},"mobile":{"background-color":"","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""}},"ast-content-background-meta":{"desktop":{"background-color":"var(--ast-global-color-5)","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""},"tablet":{"background-color":"var(--ast-global-color-5)","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""},"mobile":{"background-color":"var(--ast-global-color-5)","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""}},"_jetpack_memberships_contains_paid_content":false,"footnotes":""},"categories":[40],"tags":[],"class_list":["post-217","post","type-post","status-publish","format-standard","hentry","category-database-2"],"yoast_head":"\n