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