SQL Server with as ,普通嵌套语句简单比较

SQL Server with as ,普通嵌套语句简单比较


前言

本人是数据分析新手一枚,今年开始使用SQL Server。因工作需要,这两天在研究SQL Server 中 with as 的用法,在看了一些前辈的帖子后,结合我自己实际工作中的需要,以下是我自己的一些体会,供和我有同样情况的朋友们参考。


一、SQL Server 中 with as 的作用?

with as 短句,也叫子查询部分。定义一个SQL 片段,该片段会被整个SQL 语句用到,有的时候,是为了提高SQL 语句的可读性,有的时候,可在Union all 中使用,作为提供数据的部分。

我用with as 的目的,一,希望代码阅读起来更方便;二,我看很多的分享,使用 with as 语句,会比使用普通嵌套查询语句,提高查询效率,那么我就想知道在我的工作中,可以提高多少。

二、嵌套查询语句

1.代码

我所处的是食品零售行业,那么需要知道指定地区每年的天气情况,因而我建了一张历史天气预报的表。
tbweatherbyday: 表名,数据量约60000条
city:字段名
以下的查询语句,我希望查询城市名字里面带"州"的有哪些城市

代码如下

select * from tbweatherbyday where city in
(select city from tbweatherbyday where city like'%州')

2.查询结果

查询记录: 13242 条,查询时间:0.238s

嵌套查询

三、使用表变量的方式

1. 代码

代码如下

declare @t table(city nvarchar(5))
insert into @t(select city from tbweatherbyday where city like'%州')
select * from tbweatherbyday where city in(select * from @t)

2.查询结果

查询记录:13242条,查询时间:0.278s
表变量的查询

四、使用with as方式

1. 代码

代码如下

cr :一个公用表表达式,在使用上与表变量类似

with 
cr as
(select city from tbweatherbyday where city like'%州')
select * from tbweatherbyday where city in(select * from cr)

2.查询结果

查询记录:13242条,查询时间:0.369s

with as


总结

通过以上比较,可以看到三者的查询时间相差不大,这个结果与我在其他前辈的资料中看到的结论有点不同,可能是测试背景有差异。 那么我学习到,一定要知行合一,资料仅具有参考价值,实际使用需要结合自己的工作,这样意义会比较大。 如有不足之处,欢迎大家指正,谢谢 @[TOC](这里写自定义目录标题)

猜你喜欢

转载自blog.csdn.net/weixin_45278370/article/details/115022451