(提示:代码可以左右滑动)
这是一个比较简单的两层嵌套子查询,我们看一下执行情况:

文章插图
可以看到这里的逻辑读取是比较高的 。
我们用临时表重新来看下执行情况如何,我们将第一二层的查询结果插入到#temp中,然后从临时表中查询结果 。
SELECT SalesOrderDetailID INTO #temp FROM sales.SalesOrderDetailWHERE UnitPrice IN (SELECT UnitPrice FROM sales.SalesOrderDetail WHERE UnitPrice>0)SELECT * FROM sales.Temp_SalesorderWHERE SalesOrderDetailID IN (SELECT SalesOrderDetailID FROM #temp)
【SQL临时表的用法】执行情况如下:

文章插图

文章插图
相比上一次的逻辑读,成倍的减少了逻辑读取次数 。在对查询的性能进行调节时,如果逻辑读值下降,就表明查询使用的服务器资源减少,查询的性能有所提高 。如果逻辑读值增加,则表示调节措施降低了查询的性能 。在其他条件不变的情况下,一个查询使用的逻辑读越少,其效率就越高,查询的速度就越快 。
因此我们可以看出临时表在比较复杂的嵌套查询中是可以提高查询效率的 。
批注
临时表不管是在SQL Server还是其他平台都有使用,其在查询优化方面可以极大的提高查询效率,而SQL Server平台的临时表相比其他平台更容易创建和使用,其优越性不言而喻 。所以如果平时工作或学习过程中,临时表可以作为一个必备技能经常使用 。
推荐阅读
- mysql和postgresql时间戳设置
- SQL语法之TOP 子句
- 21分钟 MySQL 入门教程
- 网站sql注入漏洞攻击原理
- 两款免费的MySQL性能监控工具
- oppo手表怎么设置 oppo watch free怎么自定义表盘
- 数据库分库分表?如何做到永不迁移数据和避免热点?
- 喝过很多茶 但你肯定没喝过表嫂茶
- 秋季养胃食谱 两款食谱保胃健康
- Oracle数据库和SQL server数据库的区别
