sql-server – 在这种特定情况下,为什么使用表变量的速度是#temp
发布时间:2020-12-24 22:16:30 所属栏目:MsSql教程 来源:网络整理
导读:我在看这篇文章 Temporary Tables vs. Table Variables and Their Effect on SQL Server Performance和SQL Server 2008能够再现与2005年那里显示的结果类似的结果. 当执行只有10行的存储过程(下面的定义)时,表变量版本out执行临时表版本的次数超过两次. 我清
在循环中运行这两个过程,Visual Studio代码分析器显示以下内容 +-------------------------------+--------------------+-------+-----------+ | Function | Explanation | Temp | Table Var | +-------------------------------+--------------------+-------+-----------+ | CXStmtDML::XretExecute | Insert ... Select | 16.93 | 37.31 | | CXStmtQuery::ErsqExecuteQuery | Select Max | 8.77 | 23.19 | +-------------------------------+--------------------+-------+-----------+ | Total | | 25.7 | 60.5 | +-------------------------------+--------------------+-------+-----------+ 表变量版本花费大约60%的时间执行insert语句和后续select,而临时表不到一半.这与OP中显示的时序一致,并且上面的结论表明,性能差异是执行辅助工作所花费的时间,而不是由于在查询执行本身花费的时间. 在临时表版本中导致“缺失”75%的最重要功能是 +------------------------------------+-------------------+ | Function | Inclusive Samples | +------------------------------------+-------------------+ | CXStmtCreateTableDDL::XretExecute | 26.26% | | CXStmtDDL::FinishNormalImp | 4.17% | | TmpObject::Release | 27.77% | +------------------------------------+-------------------+ | Total | 58.20% | +------------------------------------+-------------------+ 在create和release函数下,函数CMEDProxyObject :: SetName的包含样本值为19.6%.从中可以推断,临时表案例中有39.2%的时间用于前面描述的重命名. 表变量版本中最大的一个对其他40%有贡献 +-----------------------------------+-------------------+ | Function | Inclusive Samples | +-----------------------------------+-------------------+ | CTableCreate::LCreate | 7.41% | | TmpObject::Release | 12.87% | +-----------------------------------+-------------------+ | Total | 20.28% | +-----------------------------------+-------------------+ 临时表格简介 表变量配置文件 (编辑:青岛站长网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
站长推荐
热点阅读