127.0.0.1:9200 URL: http://127.0.0.1:9200/likecs_art_db/_search REQUEST:
Array
(
[query] => Array
(
[match] => Array
(
[text] => Array
(
[query] => SQL Server-聚焦sp_executesql执行动态SQL查询性能真的比exec好?
)
)
)
[highlight] => Array
(
[fields] => Array
(
[text] => stdClass Object
(
)
)
[pre_tags] => #em#
[post_tags] => #/em#
)
[size] => 8
[from] => 0
)
RESPONSE:string(8244) "{"took":45,"timed_out":false,"_shards":{"total":1,"successful":1,"skipped":0,"failed":0},"hits":{"total":{"value":10000,"relation":"gte"},"max_score":85.913666,"hits":[{"_index":"likecs_art_db","_type":"_doc","_id":"4864","_score":85.913666,"_source":{"id":"4864","text":"SQL Server-\u805a\u7126sp_executesql\u6267\u884c\u52a8\u6001SQL\u67e5\u8be2\u6027\u80fd\u771f\u7684\u6bd4exec\u597d\uff1f","intro":"\u76ee\u5f55\n\nECharts\n\u5f02\u6b65\u52a0\u8f7d\n\n\n\nECharts\r\n\u6570\u636e\u53ef\u89c6\u5316\u5728\u8fc7\u53bb\u51e0\u5e74\u4e2d\u53d6\u5f97\u4e86\u5de8\u5927\u8fdb\u5c55\u3002\u5f00\u53d1\u4eba\u5458\u5bf9\u53ef\u89c6\u5316\u4ea7\u54c1\u7684\u671f\u671b\u4e0d\u518d\u662f\u7b80\u5355\u7684\u56fe\u8868\u521b\u5efa\u5de5\u5177\uff0c\u800c\u662f\u5728\u4ea4\u4e92\u3001\u6027\u80fd\u3001\u6570\u636e\u5904\u7406\u7b49\u65b9\u9762\u6709\u66f4\u9ad8\u7684\u8981\u6c42\u3002\r\nchart.setOption({\r\n color: [\r\n ","username":"CreateMyself","tagsname":"","tagsid":"[]","catesname":"SQL Server High-Performance","catesid":"[1174]","createtime":"1515769641"},"highlight":{"text":["#em#SQL#/em# #em#Server#/em#-#em#聚#/em##em#焦#/em##em#sp_executesql#/em##em#执#/em##em#行#/em##em#动#/em##em#态#/em##em#SQL#/em##em#查#/em##em#询#/em##em#性#/em##em#能#/em##em#真#/em##em#的#/em##em#比#/em##em#exec#/em##em#好#/em#?"]}},{"_index":"likecs_art_db","_type":"_doc","_id":"764054","_score":43.2005,"_source":{"id":"764054","text":"SQL Server-\u805a\u7126\u6df1\u5165\u7406\u89e3\u52a8\u6001SQL\u67e5\u8be2\uff08\u4e09\u5341\u4e8c\uff09","intro":"\u76ee\u5f55\n\nECharts\n\u5f02\u6b65\u52a0\u8f7d\n\n\n\nECharts\r\n\u6570\u636e\u53ef\u89c6\u5316\u5728\u8fc7\u53bb\u51e0\u5e74\u4e2d\u53d6\u5f97\u4e86\u5de8\u5927\u8fdb\u5c55\u3002\u5f00\u53d1\u4eba\u5458\u5bf9\u53ef\u89c6\u5316\u4ea7\u54c1\u7684\u671f\u671b\u4e0d\u518d\u662f\u7b80\u5355\u7684\u56fe\u8868\u521b\u5efa\u5de5\u5177\uff0c\u800c\u662f\u5728\u4ea4\u4e92\u3001\u6027\u80fd\u3001\u6570\u636e\u5904\u7406\u7b49\u65b9\u9762\u6709\u66f4\u9ad8\u7684\u8981\u6c42\u3002\r\nchart.setOption({\r\n color: [\r\n ","username":"CreateMyself","tagsname":"","tagsid":"","catesname":null,"catesid":"","createtime":"1636669610"},"highlight":{"text":["#em#SQL#/em# #em#Server#/em#-#em#聚#/em##em#焦#/em#深入理解#em#动#/em##em#态#/em##em#SQL#/em##em#查#/em##em#询#/em#(三十二)"]}},{"_index":"likecs_art_db","_type":"_doc","_id":"764053","_score":38.038967,"_source":{"id":"764053","text":"\u67e5\u8be2SQL Server\u6267\u884c\u8fc7\u7684SQL\u8bed\u53e5","intro":"\u76ee\u5f55\n\nECharts\n\u5f02\u6b65\u52a0\u8f7d\n\n\n\nECharts\r\n\u6570\u636e\u53ef\u89c6\u5316\u5728\u8fc7\u53bb\u51e0\u5e74\u4e2d\u53d6\u5f97\u4e86\u5de8\u5927\u8fdb\u5c55\u3002\u5f00\u53d1\u4eba\u5458\u5bf9\u53ef\u89c6\u5316\u4ea7\u54c1\u7684\u671f\u671b\u4e0d\u518d\u662f\u7b80\u5355\u7684\u56fe\u8868\u521b\u5efa\u5de5\u5177\uff0c\u800c\u662f\u5728\u4ea4\u4e92\u3001\u6027\u80fd\u3001\u6570\u636e\u5904\u7406\u7b49\u65b9\u9762\u6709\u66f4\u9ad8\u7684\u8981\u6c42\u3002\r\nchart.setOption({\r\n color: [\r\n ","username":"blogcore","tagsname":"","tagsid":"","catesname":null,"catesid":"","createtime":"1636669607"},"highlight":{"text":["#em#查#/em##em#询#/em##em#SQL#/em# #em#Server#/em##em#执#/em##em#行#/em#过#em#的#/em##em#SQL#/em#语句"]}},{"_index":"likecs_art_db","_type":"_doc","_id":"203318053","_score":34.067814,"_source":{"id":"203318053","text":"sql server\u6027\u80fd\u67e5\u8be2,\u8fde\u63a5\u6570","intro":"\u76ee\u5f55\n\nECharts\n\u5f02\u6b65\u52a0\u8f7d\n\n\n\nECharts\r\n\u6570\u636e\u53ef\u89c6\u5316\u5728\u8fc7\u53bb\u51e0\u5e74\u4e2d\u53d6\u5f97\u4e86\u5de8\u5927\u8fdb\u5c55\u3002\u5f00\u53d1\u4eba\u5458\u5bf9\u53ef\u89c6\u5316\u4ea7\u54c1\u7684\u671f\u671b\u4e0d\u518d\u662f\u7b80\u5355\u7684\u56fe\u8868\u521b\u5efa\u5de5\u5177\uff0c\u800c\u662f\u5728\u4ea4\u4e92\u3001\u6027\u80fd\u3001\u6570\u636e\u5904\u7406\u7b49\u65b9\u9762\u6709\u66f4\u9ad8\u7684\u8981\u6c42\u3002\r\nchart.setOption({\r\n color: [\r\n ","username":"","tagsname":null,"tagsid":"","catesname":null,"catesid":"","createtime":"1624617446"},"highlight":{"text":["#em#sql#/em# #em#server#/em##em#性#/em##em#能#/em##em#查#/em##em#询#/em#,连接数"]}},{"_index":"likecs_art_db","_type":"_doc","_id":"203505153","_score":32.66732,"_source":{"id":"203505153","text":"SQL\u67e5\u8be2\u8bed\u53e5\u6267\u884c","intro":"\u76ee\u5f55\n\nECharts\n\u5f02\u6b65\u52a0\u8f7d\n\n\n\nECharts\r\n\u6570\u636e\u53ef\u89c6\u5316\u5728\u8fc7\u53bb\u51e0\u5e74\u4e2d\u53d6\u5f97\u4e86\u5de8\u5927\u8fdb\u5c55\u3002\u5f00\u53d1\u4eba\u5458\u5bf9\u53ef\u89c6\u5316\u4ea7\u54c1\u7684\u671f\u671b\u4e0d\u518d\u662f\u7b80\u5355\u7684\u56fe\u8868\u521b\u5efa\u5de5\u5177\uff0c\u800c\u662f\u5728\u4ea4\u4e92\u3001\u6027\u80fd\u3001\u6570\u636e\u5904\u7406\u7b49\u65b9\u9762\u6709\u66f4\u9ad8\u7684\u8981\u6c42\u3002\r\nchart.setOption({\r\n color: [\r\n ","username":"","tagsname":null,"tagsid":"","catesname":null,"catesid":"","createtime":"1633665886"},"highlight":{"text":["#em#SQL#/em##em#查#/em##em#询#/em#语句#em#执#/em##em#行#/em#"]}},{"_index":"likecs_art_db","_type":"_doc","_id":"120683","_score":32.221924,"_source":{"id":"120683","text":"\u81ea\u9002\u5e94\u67e5\u8be2\u6267\u884c\uff1a\u5728\u8fd0\u884c\u65f6\u63d0\u5347Spark SQL\u6267\u884c\u6027\u80fd","intro":"\u76ee\u5f55\n\nECharts\n\u5f02\u6b65\u52a0\u8f7d\n\n\n\nECharts\r\n\u6570\u636e\u53ef\u89c6\u5316\u5728\u8fc7\u53bb\u51e0\u5e74\u4e2d\u53d6\u5f97\u4e86\u5de8\u5927\u8fdb\u5c55\u3002\u5f00\u53d1\u4eba\u5458\u5bf9\u53ef\u89c6\u5316\u4ea7\u54c1\u7684\u671f\u671b\u4e0d\u518d\u662f\u7b80\u5355\u7684\u56fe\u8868\u521b\u5efa\u5de5\u5177\uff0c\u800c\u662f\u5728\u4ea4\u4e92\u3001\u6027\u80fd\u3001\u6570\u636e\u5904\u7406\u7b49\u65b9\u9762\u6709\u66f4\u9ad8\u7684\u8981\u6c42\u3002\r\nchart.setOption({\r\n color: [\r\n ","username":"bigdatalearnshare","tagsname":"\u5185\u5b58\u8ba1\u7b97|\u5927\u6570\u636e\u8ba1\u7b97\u5f15\u64ce|\u5927\u6570\u636e|Spark|\u5206\u5e03\u5f0f\u8ba1\u7b97","tagsid":"[\"26728\",\"26830\",\"888\",\"412\",27354]","catesname":"Spark","catesid":"[\"319\"]","createtime":"1608513820"},"highlight":{"text":["自适应#em#查#/em##em#询#/em##em#执#/em##em#行#/em#:在运#em#行#/em#时提升Spark #em#SQL#/em##em#执#/em##em#行#/em##em#性#/em##em#能#/em#"]}},{"_index":"likecs_art_db","_type":"_doc","_id":"108720","_score":32.112186,"_source":{"id":"108720","text":"Oracle\u67e5\u770bSQL\u6267\u884c\u8ba1\u5212\uff0c\u5206\u6790SQL\u6027\u80fd","intro":"\u76ee\u5f55\n\nECharts\n\u5f02\u6b65\u52a0\u8f7d\n\n\n\nECharts\r\n\u6570\u636e\u53ef\u89c6\u5316\u5728\u8fc7\u53bb\u51e0\u5e74\u4e2d\u53d6\u5f97\u4e86\u5de8\u5927\u8fdb\u5c55\u3002\u5f00\u53d1\u4eba\u5458\u5bf9\u53ef\u89c6\u5316\u4ea7\u54c1\u7684\u671f\u671b\u4e0d\u518d\u662f\u7b80\u5355\u7684\u56fe\u8868\u521b\u5efa\u5de5\u5177\uff0c\u800c\u662f\u5728\u4ea4\u4e92\u3001\u6027\u80fd\u3001\u6570\u636e\u5904\u7406\u7b49\u65b9\u9762\u6709\u66f4\u9ad8\u7684\u8981\u6c42\u3002\r\nchart.setOption({\r\n color: [\r\n ","username":"zdmd","tagsname":"","tagsid":"","catesname":null,"catesid":"","createtime":"1641130294"},"highlight":{"text":["Oracle#em#查#/em#看#em#SQL#/em##em#执#/em##em#行#/em#计划,分析#em#SQL#/em##em#性#/em##em#能#/em#"]}},{"_index":"likecs_art_db","_type":"_doc","_id":"45387","_score":31.7429,"_source":{"id":"45387","text":"\u3010Sql Server\u3011SQL SERVER \u9012\u5f52\u67e5\u8be2","intro":"\u76ee\u5f55\n\nECharts\n\u5f02\u6b65\u52a0\u8f7d\n\n\n\nECharts\r\n\u6570\u636e\u53ef\u89c6\u5316\u5728\u8fc7\u53bb\u51e0\u5e74\u4e2d\u53d6\u5f97\u4e86\u5de8\u5927\u8fdb\u5c55\u3002\u5f00\u53d1\u4eba\u5458\u5bf9\u53ef\u89c6\u5316\u4ea7\u54c1\u7684\u671f\u671b\u4e0d\u518d\u662f\u7b80\u5355\u7684\u56fe\u8868\u521b\u5efa\u5de5\u5177\uff0c\u800c\u662f\u5728\u4ea4\u4e92\u3001\u6027\u80fd\u3001\u6570\u636e\u5904\u7406\u7b49\u65b9\u9762\u6709\u66f4\u9ad8\u7684\u8981\u6c42\u3002\r\nchart.setOption({\r\n color: [\r\n ","username":"willingtolove","tagsname":"","tagsid":"","catesname":null,"catesid":"","createtime":"1545559393"},"highlight":{"text":["【#em#Sql#/em# #em#Server#/em#】#em#SQL#/em# #em#SERVER#/em# 递归#em#查#/em##em#询#/em#"]}}]}}"
127.0.0.1:9200 URL: http://127.0.0.1:9200/likecs_art_db/_search REQUEST:Array
(
[query] => Array
(
[match] => Array
(
[text] => Array
(
[query] => SQL Server-聚焦sp_executesql执行动态SQL查询性能真的比exec好?
)
)
)
[highlight] => Array
(
[fields] => Array
(
[text] => stdClass Object
(
)
)
[pre_tags] => #em#
[post_tags] => #/em#
)
[size] => 8
[from] => 8
)
RESPONSE:string(7570) "{"took":53,"timed_out":false,"_shards":{"total":1,"successful":1,"skipped":0,"failed":0},"hits":{"total":{"value":10000,"relation":"gte"},"max_score":85.913666,"hits":[{"_index":"likecs_art_db","_type":"_doc","_id":"203505162","_score":31.432676,"_source":{"id":"203505162","text":"\u7406\u89e3SQL Server\u662f\u5982\u4f55\u6267\u884c\u67e5\u8be2\u7684 (1\/3)","intro":"\u76ee\u5f55\n\nECharts\n\u5f02\u6b65\u52a0\u8f7d\n\n\n\nECharts\r\n\u6570\u636e\u53ef\u89c6\u5316\u5728\u8fc7\u53bb\u51e0\u5e74\u4e2d\u53d6\u5f97\u4e86\u5de8\u5927\u8fdb\u5c55\u3002\u5f00\u53d1\u4eba\u5458\u5bf9\u53ef\u89c6\u5316\u4ea7\u54c1\u7684\u671f\u671b\u4e0d\u518d\u662f\u7b80\u5355\u7684\u56fe\u8868\u521b\u5efa\u5de5\u5177\uff0c\u800c\u662f\u5728\u4ea4\u4e92\u3001\u6027\u80fd\u3001\u6570\u636e\u5904\u7406\u7b49\u65b9\u9762\u6709\u66f4\u9ad8\u7684\u8981\u6c42\u3002\r\nchart.setOption({\r\n color: [\r\n ","username":"","tagsname":null,"tagsid":"","catesname":null,"catesid":"","createtime":"1626195230"},"highlight":{"text":["理解#em#SQL#/em# #em#Server#/em#是如何#em#执#/em##em#行#/em##em#查#/em##em#询#/em##em#的#/em# (1/3)"]}},{"_index":"likecs_art_db","_type":"_doc","_id":"971156","_score":30.983246,"_source":{"id":"971156","text":"SQL Server SQL\u5206\u9875\u67e5\u8be2","intro":"\u76ee\u5f55\n\nECharts\n\u5f02\u6b65\u52a0\u8f7d\n\n\n\nECharts\r\n\u6570\u636e\u53ef\u89c6\u5316\u5728\u8fc7\u53bb\u51e0\u5e74\u4e2d\u53d6\u5f97\u4e86\u5de8\u5927\u8fdb\u5c55\u3002\u5f00\u53d1\u4eba\u5458\u5bf9\u53ef\u89c6\u5316\u4ea7\u54c1\u7684\u671f\u671b\u4e0d\u518d\u662f\u7b80\u5355\u7684\u56fe\u8868\u521b\u5efa\u5de5\u5177\uff0c\u800c\u662f\u5728\u4ea4\u4e92\u3001\u6027\u80fd\u3001\u6570\u636e\u5904\u7406\u7b49\u65b9\u9762\u6709\u66f4\u9ad8\u7684\u8981\u6c42\u3002\r\nchart.setOption({\r\n color: [\r\n ","username":"weihanli","tagsname":null,"tagsid":"","catesname":null,"catesid":"","createtime":"1639838260"},"highlight":{"text":["#em#SQL#/em# #em#Server#/em# #em#SQL#/em#分页#em#查#/em##em#询#/em#"]}},{"_index":"likecs_art_db","_type":"_doc","_id":"936399","_score":30.972288,"_source":{"id":"936399","text":"Oracle\u4e2d\u6267\u884c\u52a8\u6001SQL","intro":"\u76ee\u5f55\n\nECharts\n\u5f02\u6b65\u52a0\u8f7d\n\n\n\nECharts\r\n\u6570\u636e\u53ef\u89c6\u5316\u5728\u8fc7\u53bb\u51e0\u5e74\u4e2d\u53d6\u5f97\u4e86\u5de8\u5927\u8fdb\u5c55\u3002\u5f00\u53d1\u4eba\u5458\u5bf9\u53ef\u89c6\u5316\u4ea7\u54c1\u7684\u671f\u671b\u4e0d\u518d\u662f\u7b80\u5355\u7684\u56fe\u8868\u521b\u5efa\u5de5\u5177\uff0c\u800c\u662f\u5728\u4ea4\u4e92\u3001\u6027\u80fd\u3001\u6570\u636e\u5904\u7406\u7b49\u65b9\u9762\u6709\u66f4\u9ad8\u7684\u8981\u6c42\u3002\r\nchart.setOption({\r\n color: [\r\n ","username":"BlogNetSpace","tagsname":"","tagsid":"","catesname":null,"catesid":"","createtime":"1638688839"},"highlight":{"text":["Oracle中#em#执#/em##em#行#/em##em#动#/em##em#态#/em##em#SQL#/em#"]}},{"_index":"likecs_art_db","_type":"_doc","_id":"680452","_score":30.78309,"_source":{"id":"680452","text":"SQL\u67e5\u8be2\u6027\u80fd\u5206\u6790","intro":"\u76ee\u5f55\n\nECharts\n\u5f02\u6b65\u52a0\u8f7d\n\n\n\nECharts\r\n\u6570\u636e\u53ef\u89c6\u5316\u5728\u8fc7\u53bb\u51e0\u5e74\u4e2d\u53d6\u5f97\u4e86\u5de8\u5927\u8fdb\u5c55\u3002\u5f00\u53d1\u4eba\u5458\u5bf9\u53ef\u89c6\u5316\u4ea7\u54c1\u7684\u671f\u671b\u4e0d\u518d\u662f\u7b80\u5355\u7684\u56fe\u8868\u521b\u5efa\u5de5\u5177\uff0c\u800c\u662f\u5728\u4ea4\u4e92\u3001\u6027\u80fd\u3001\u6570\u636e\u5904\u7406\u7b49\u65b9\u9762\u6709\u66f4\u9ad8\u7684\u8981\u6c42\u3002\r\nchart.setOption({\r\n color: [\r\n ","username":"wayne-ivan","tagsname":"","tagsid":"","catesname":null,"catesid":"","createtime":"1635848157"},"highlight":{"text":["#em#SQL#/em##em#查#/em##em#询#/em##em#性#/em##em#能#/em#分析"]}},{"_index":"likecs_art_db","_type":"_doc","_id":"764066","_score":30.554518,"_source":{"id":"764066","text":"\u67e5\u8be2SQLSERVER\u6267\u884c\u8fc7\u7684SQL\u8bb0\u5f55","intro":"\u76ee\u5f55\n\nECharts\n\u5f02\u6b65\u52a0\u8f7d\n\n\n\nECharts\r\n\u6570\u636e\u53ef\u89c6\u5316\u5728\u8fc7\u53bb\u51e0\u5e74\u4e2d\u53d6\u5f97\u4e86\u5de8\u5927\u8fdb\u5c55\u3002\u5f00\u53d1\u4eba\u5458\u5bf9\u53ef\u89c6\u5316\u4ea7\u54c1\u7684\u671f\u671b\u4e0d\u518d\u662f\u7b80\u5355\u7684\u56fe\u8868\u521b\u5efa\u5de5\u5177\uff0c\u800c\u662f\u5728\u4ea4\u4e92\u3001\u6027\u80fd\u3001\u6570\u636e\u5904\u7406\u7b49\u65b9\u9762\u6709\u66f4\u9ad8\u7684\u8981\u6c42\u3002\r\nchart.setOption({\r\n color: [\r\n ","username":"yunfeifei","tagsname":"","tagsid":"","catesname":null,"catesid":"","createtime":"1636669629"},"highlight":{"text":["#em#查#/em##em#询#/em#SQLSERVER#em#执#/em##em#行#/em#过#em#的#/em##em#SQL#/em#记录"]}},{"_index":"likecs_art_db","_type":"_doc","_id":"148408","_score":30.322216,"_source":{"id":"148408","text":"SQL\u7b1b\u5361\u5c14\u79ef\u67e5\u8be2\u4e0e\u5173\u8054\u67e5\u8be2\u6027\u80fd\u5bf9\u6bd4","intro":"\u76ee\u5f55\n\nECharts\n\u5f02\u6b65\u52a0\u8f7d\n\n\n\nECharts\r\n\u6570\u636e\u53ef\u89c6\u5316\u5728\u8fc7\u53bb\u51e0\u5e74\u4e2d\u53d6\u5f97\u4e86\u5de8\u5927\u8fdb\u5c55\u3002\u5f00\u53d1\u4eba\u5458\u5bf9\u53ef\u89c6\u5316\u4ea7\u54c1\u7684\u671f\u671b\u4e0d\u518d\u662f\u7b80\u5355\u7684\u56fe\u8868\u521b\u5efa\u5de5\u5177\uff0c\u800c\u662f\u5728\u4ea4\u4e92\u3001\u6027\u80fd\u3001\u6570\u636e\u5904\u7406\u7b49\u65b9\u9762\u6709\u66f4\u9ad8\u7684\u8981\u6c42\u3002\r\nchart.setOption({\r\n color: [\r\n ","username":"Bug-Hunter","tagsname":null,"tagsid":"","catesname":null,"catesid":"","createtime":"1628144832"},"highlight":{"text":["#em#SQL#/em#笛卡尔积#em#查#/em##em#询#/em#与关联#em#查#/em##em#询#/em##em#性#/em##em#能#/em#对#em#比#/em#"]}},{"_index":"likecs_art_db","_type":"_doc","_id":"250434","_score":29.982208,"_source":{"id":"250434","text":"SQL Server T-SQL\u9ad8\u7ea7\u67e5\u8be2","intro":"\u76ee\u5f55\n\nECharts\n\u5f02\u6b65\u52a0\u8f7d\n\n\n\nECharts\r\n\u6570\u636e\u53ef\u89c6\u5316\u5728\u8fc7\u53bb\u51e0\u5e74\u4e2d\u53d6\u5f97\u4e86\u5de8\u5927\u8fdb\u5c55\u3002\u5f00\u53d1\u4eba\u5458\u5bf9\u53ef\u89c6\u5316\u4ea7\u54c1\u7684\u671f\u671b\u4e0d\u518d\u662f\u7b80\u5355\u7684\u56fe\u8868\u521b\u5efa\u5de5\u5177\uff0c\u800c\u662f\u5728\u4ea4\u4e92\u3001\u6027\u80fd\u3001\u6570\u636e\u5904\u7406\u7b49\u65b9\u9762\u6709\u66f4\u9ad8\u7684\u8981\u6c42\u3002\r\nchart.setOption({\r\n color: [\r\n ","username":"hoojo","tagsname":null,"tagsid":"","catesname":null,"catesid":"","createtime":"1636596689"},"highlight":{"text":["#em#SQL#/em# #em#Server#/em# T-#em#SQL#/em#高级#em#查#/em##em#询#/em#"]}},{"_index":"likecs_art_db","_type":"_doc","_id":"989500","_score":29.979662,"_source":{"id":"989500","text":"PL\/SQL Developer \u67e5\u770b\u67e5\u8be2\u7684\u6267\u884c\u8ba1\u5212","intro":"\u76ee\u5f55\n\nECharts\n\u5f02\u6b65\u52a0\u8f7d\n\n\n\nECharts\r\n\u6570\u636e\u53ef\u89c6\u5316\u5728\u8fc7\u53bb\u51e0\u5e74\u4e2d\u53d6\u5f97\u4e86\u5de8\u5927\u8fdb\u5c55\u3002\u5f00\u53d1\u4eba\u5458\u5bf9\u53ef\u89c6\u5316\u4ea7\u54c1\u7684\u671f\u671b\u4e0d\u518d\u662f\u7b80\u5355\u7684\u56fe\u8868\u521b\u5efa\u5de5\u5177\uff0c\u800c\u662f\u5728\u4ea4\u4e92\u3001\u6027\u80fd\u3001\u6570\u636e\u5904\u7406\u7b49\u65b9\u9762\u6709\u66f4\u9ad8\u7684\u8981\u6c42\u3002\r\nchart.setOption({\r\n color: [\r\n ","username":"kakaisgood","tagsname":"","tagsid":"","catesname":null,"catesid":"","createtime":"1640266242"},"highlight":{"text":["PL/#em#SQL#/em# Developer #em#查#/em#看#em#查#/em##em#询#/em##em#的#/em##em#执#/em##em#行#/em#计划"]}}]}}"
127.0.0.1:9200 URL: http://192.168.101.128/searchcore/index.php/cihere_cn_db/_search REQUEST:Array
(
[query] => Array
(
[match] => Array
(
[title] => Array
(
[query] => SQL Server-聚焦sp_executesql执行动态SQL查询性能真的比exec好?
)
)
)
[highlight] => Array
(
[fields] => Array
(
[title] => stdClass Object
(
)
)
[pre_tags] => #em#
[post_tags] => #/em#
)
[from] => 0
)
RESPONSE:bool(false)
127.0.0.1:9200 URL: http://127.0.0.1:9200/likecs_down_db/_search REQUEST:Array
(
[query] => Array
(
[bool] => Array
(
[must] => Array
(
[0] => Array
(
[match] => Array
(
[title] => Array
(
[query] => SQL Server-聚焦sp_executesql执行动态SQL查询性能真的比exec好?
)
)
)
)
[must_not] => Array
(
[0] => Array
(
[term] => Array
(
[cate1] => 电子书籍
)
)
)
)
)
[highlight] => Array
(
[fields] => Array
(
[title] => stdClass Object
(
)
)
[pre_tags] => #em#
[post_tags] => #/em#
)
[size] => 5
[from] => 0
)
RESPONSE:string(2898) "{"took":13,"timed_out":false,"_shards":{"total":1,"successful":1,"skipped":0,"failed":0},"hits":{"total":{"value":10000,"relation":"gte"},"max_score":32.751545,"hits":[{"_index":"likecs_down_db","_type":"_doc","_id":"58622","_score":32.751545,"_source":{"id":"58622","title":"SQL Server 2008\u67e5\u8be2\u6027\u80fd\u4f18\u5316\u4e2d\u6587PDF\u626b\u63cf\u7248","spidertime":"1623065689","contenttime":"1675075707","pageimage":"https:\/\/img.jbzj.com\/do\/uploads\/litimg\/110323\/192G91II.gif","tag":"sql|Server|\u67e5\u8be2","cate1":"\u7535\u5b50\u4e66\u7c4d","cate2":"\u6570\u636e\u5e93XML","cate3":"sqlserver","attr1":"98MB"},"highlight":{"title":["#em#SQL#/em# #em#Server#/em# 2008#em#查#/em##em#询#/em##em#性#/em##em#能#/em#优化中文PDF扫描版"]}},{"_index":"likecs_down_db","_type":"_doc","_id":"7349","_score":32.751545,"_source":{"id":"7349","title":"SQL Server 2008\u67e5\u8be2\u6027\u80fd\u4f18\u5316\u4e2d\u6587PDF\u626b\u63cf\u7248","spidertime":"1622873562","contenttime":"1677071141","pageimage":"https:\/\/img.jbzj.com\/do\/uploads\/litimg\/110323\/192G91II.gif","tag":"sql|Server|\u67e5\u8be2","cate1":"\u7535\u5b50\u4e66\u7c4d","cate2":"\u6570\u636e\u5e93XML","cate3":"sqlserver","attr1":"98MB"},"highlight":{"title":["#em#SQL#/em# #em#Server#/em# 2008#em#查#/em##em#询#/em##em#性#/em##em#能#/em#优化中文PDF扫描版"]}},{"_index":"likecs_down_db","_type":"_doc","_id":"53799","_score":28.60421,"_source":{"id":"53799","title":"Web\u9875\u9762\u6267\u884cSQL\u8bed\u53e5","spidertime":"1623058959","contenttime":"1676198766","pageimage":"https:\/\/img.jbzj.com\/do\/uploads\/allimg\/090717\/1010190.jpg","tag":"Web\u9875\u9762|SQL\u8bed\u53e5","cate1":"\u6e90\u7801\u4e0b\u8f7d","cate2":"asp.net\u6e90\u7801","cate3":"asp.net\u5176\u5b83","attr1":"4KB"},"highlight":{"title":["Web页面#em#执#/em##em#行#/em##em#SQL#/em#语句"]}},{"_index":"likecs_down_db","_type":"_doc","_id":"71551","_score":25.194668,"_source":{"id":"71551","title":"Mysql\u4e2d\u5229\u7528profiles\u6765\u67e5\u770bSQL\u8bed\u53e5\u6267\u884c\u8ba1\u5212","spidertime":"1623127211","contenttime":"1625111910","tag":"MySQL|profiles","cate1":"\u7535\u5b50\u4e66\u7c4d","cate2":"\u6570\u636e\u5e93XML","cate3":"\u6570\u636e\u5e93\u5176\u5b83","attr1":"11KB"},"highlight":{"title":["Mysql中利用profiles来#em#查#/em#看#em#SQL#/em#语句#em#执#/em##em#行#/em#计划"]}},{"_index":"likecs_down_db","_type":"_doc","_id":"36527","_score":25.194668,"_source":{"id":"36527","title":"Mysql\u4e2d\u5229\u7528profiles\u6765\u67e5\u770bSQL\u8bed\u53e5\u6267\u884c\u8ba1\u5212","spidertime":"1622961620","contenttime":"1622961620","tag":"MySQL|profiles","cate1":"\u7535\u5b50\u4e66\u7c4d","cate2":"\u6570\u636e\u5e93XML","cate3":"\u6570\u636e\u5e93\u5176\u5b83","attr1":"11KB"},"highlight":{"title":["Mysql中利用profiles来#em#查#/em#看#em#SQL#/em#语句#em#执#/em##em#行#/em#计划"]}}]}}"
SQL Server-聚焦sp_executesql执行动态SQL查询性能真的比exec好? - 爱码网
前言
之前我们已经讨论过动态SQL查询呢?这里为何再来探讨一番呢?因为其中还是存在一定问题,如标题所言,很多面试题也好或者有些博客也好都在说在执行动态SQL查询时sp_executesql的性能比exec好,但是事实真是如此?下面我们来一探究竟。
探讨sp_executesql和exec执行动态SQL查询性能
首先我们创建如下测试表。
CREATE TABLE dbo.TestDynamicSQL
(
Col1 INT PRIMARY KEY ,
Col2 SMALLINT NOT NULL ,
CreatedTime DATETIME DEFAULT GETDATE () ,
OtherValue CHAR (10 ) DEFAULT ' Jeffcky '
)
GO
接着再来插入数据,如下:
INSERT dbo.TestDynamicSQL
( Col1,
Col2
)
SELECT number + 1 ,
number
FROM master..spt_values
WHERE type = ' P '
ORDER BY number
最终查询为如下测试数据:
接下来我们执行如下两个SQL查询语句,执行4次。
SELECT *
FROM dbo.TestDynamicSQL
WHERE Col2 = 3
AND Col1 = 4
GO
SELECT *
FROM dbo.TestDynamicSQL
WHERE Col2 = 4
AND Col1 = 5
GO
紧接着我们通过如下SQL语句来查询缓存计划。
SELECT q.text ,
cp.usecounts ,
cp.objtype ,
p. * ,
q. * ,
cp.plan_handle
FROM sys.dm_exec_cached_plans cp
CROSS APPLY sys.dm_exec_query_plan(cp.plan_handle) p
CROSS APPLY sys.dm_exec_sql_text(cp.plan_handle) AS q
WHERE cp.cacheobjtype = ' Compiled Plan '
AND q.text LIKE ' %dbo.test% '
AND q.text NOT LIKE ' %sys.dm_exec_cached_plans % '
由上图可知,我们看到存在两个查询计划且每个执行了4次,也就是说每一次查询都会重新生成一个新的计划。清除查询计划缓存,通过如下命令:
我们继续往下走,我们接下来通过EXEC来执行动态SQL查询,如下,执行查询完毕后再来看看查询计划次数:
DECLARE @Col2 SMALLINT
DECLARE @Col1 INT
SELECT @Col2 = 11 ,
@Col1 = 12
DECLARE @SQL VARCHAR (1000 )
SELECT @SQL = ' select * from dbo.TestDynamicSQL
where Col2 = ' + CONVERT (VARCHAR (10 ), @Col2 ) + '
and Col1 = ' + CONVERT (VARCHAR (10 ), @Col1 )
EXEC (@SQL )
GO
DECLARE @Col2 SMALLINT
DECLARE @Col1 INT
SELECT @Col2 = 12 ,
@Col1 = 13
DECLARE @SQL VARCHAR (1000 )
SELECT @SQL = ' select * from dbo.TestDynamicSQL
where Col2 = ' + CONVERT (VARCHAR (10 ), @Col2 ) + '
and Col1 = ' + CONVERT (VARCHAR (10 ), @Col1 )
EXEC (@SQL )
GO
这个就不做过多解释,我们依然要清除查询计划缓存,我们再利用sp_executesql来查询,如下:
DECLARE @Col2 SMALLINT
DECLARE @Col1 INT
SELECT @Col2 = 23 ,
@Col1 = 24
DECLARE @SQL NVARCHAR (1000 )
SELECT @SQL = ' select * from dbo.TestDynamicSQL
where Col2 = ' + CONVERT (VARCHAR (10 ), @Col2 ) + '
and Col1 = ' + CONVERT (VARCHAR (10 ), @Col1 )
EXEC sp_executesql @SQL
Go
DECLARE @Col2 SMALLINT
DECLARE @Col1 INT
SELECT @Col2 = 22 ,
@Col1 = 23
DECLARE @SQL NVARCHAR (1000 )
SELECT @SQL = ' select * from dbo.TestDynamicSQL
where Col2 = ' + CONVERT (VARCHAR (10 ), @Col2 ) + '
and Col1 = ' + CONVERT (VARCHAR (10 ), @Col1 )
EXEC sp_executesql @SQL
GO
对比exec执行动态SQL查询得到的结果是一模一样,正如我所演示的,我们有两个计划,每个执行次数为4。不是说sp_executesql执行动态SQL查询会重用计划缓存么,这是因为我们没有正确使用sp_executesql所以导致SQL引擎无法重用计划。
当参数值改变为语句是唯一变化时,可以使用sp_executesql代替存储过程多次执行Transact-SQL语句。 因为Transact-SQL语句本身保持不变,只有参数值发生变化,因此SQL Server查询优化器可能会重用为第一次执行生成的执行计划。
以下是正确参数化的查询方式,我们在字符串里面有一些变量,在执行的时候,我们通过其他变量传递值给它。
DECLARE @Col2 SMALLINT ,
@Col1 INT
SELECT @Col2 = 3 ,
@Col1 = 4
DECLARE @SQL NVARCHAR (1000 )
SELECT @SQL = ' select * from dbo.TestDynamicSQL
where Col2 = @InnerCol2 and Col1 = @InnerCol1 '
DECLARE @ParmDefinition NVARCHAR (500 )
SET @ParmDefinition = N' @InnerCol2 smallint ,@InnerCol1 int '
EXEC sp_executesql @SQL , @ParmDefinition , @InnerCol2 = @Col2 ,
@InnerCol1 = @Col1
GO
DECLARE @Col2 SMALLINT ,
@Col1 INT
SELECT @Col2 = 3 ,
@Col1 = 4
DECLARE @SQL NVARCHAR (1000 )
SELECT @SQL = ' select * from dbo.TestDynamicSQL
where Col2 = @InnerCol2 and Col1 = @InnerCol1 '
DECLARE @ParmDefinition NVARCHAR (500 )
SET @ParmDefinition = N' @InnerCol2 smallint ,@InnerCol1 int '
EXEC sp_executesql @SQL , @ParmDefinition , @InnerCol2 = @Col2 ,
@InnerCol1 = @Col1
GO
我们看到只有一个计数为8的计划,而不是像我们上述那样运行查询。 我们也可以只需要声明一次,然后我们只需要在执行之前更改参数的值,如下:
DECLARE @Col2 SMALLINT ,
@Col1 INT
SELECT @Col2 = 3 ,
@Col1 = 4
DECLARE @SQL NVARCHAR (1000 )
SELECT @SQL = ' select * from dbo.TestDynamicSQL
where Col2 = @InnerCol2 and Col1 = @InnerCol1 '
DECLARE @ParmDefinition NVARCHAR (500 )
SET @ParmDefinition = N' @InnerCol2 smallint ,@InnerCol1 int '
EXEC sp_executesql @SQL , @ParmDefinition , @InnerCol2 = @Col2 ,
@InnerCol1 = @Col1
-- change param values and run the same query
SELECT @Col2 = 2 ,
@Col1 = 3
EXEC sp_executesql @SQL , @ParmDefinition , @InnerCol2 = @Col2 ,
@InnerCol1 = @Col1
最终查询计划缓存次数和上述正确方式一致。正确使用sp_executesql对于性能非常有利,而且使用sp_executesql还可以为我们提供一些EXEC无法实现的功能。比如如何得到一个表中的行数? 利用EXEC我们需要使用一个临时表和填充,而用sp_executesql我们只需要使用一个输出变量。
SET STATISTICS IO ON
SET STATISTICS TIME ON
-- EXEC (SQL)
DECLARE @Totalcount INT ,
@SQL NVARCHAR (100 )
CREATE TABLE #temp (Totalcount INT )
SELECT @SQL = ' Insert into #temp Select Count(*) from dbo.TestDynamicSQL '
EXEC ( @SQL )
SELECT @Totalcount = Totalcount
FROM #temp
SELECT @Totalcount AS Totalcount
DROP TABLE #temp
GO
-- sp_executesql
DECLARE @TableCount INT ,
@SQL NVARCHAR (100 )
SELECT @SQL = N' SELECT @InnerTableCount = COUNT(*) FROM dbo.TestDynamicSQL '
EXEC SP_EXECUTESQL @SQL , N' @InnerTableCount INT OUTPUT ' , @TableCount OUTPUT
SELECT @TableCount
GO
当然除了EXEC无法实现的功能外,最重要的一点则是SP_EXECUTESQL能够防止SQL注入问题。
总结
执行SQL动态查询SP_EXECUTESQL比EXEC性能更好的存储过程能够被重用,但是存储过程能够被重用的前提则是正确使用参数,使用参数化查询否则SP_EXECUTESQL将不会提供任何性能益处。
相关文章:
2021-07-14
2021-12-18
2021-12-05
2021-11-02
2021-11-12
2021-08-05
2021-11-11
2021-12-23
猜你喜欢
2021-11-12
2021-11-12
2021-06-25
2021-10-08
2020-12-21
2022-01-02
2018-12-23
相关资源
下载
2023-01-30
下载
2023-02-12
下载
2021-07-01