sqlunion和unionall的⽤法及效率
UNION指令的⽬的是将两个SQL语句的结果合并起来。从这个⾓度来看,我们会产⽣这样的感觉,UNION跟JOIN似乎有些许类似,因为这两个指令都可以由多个表格中撷取资料。 UNION的⼀个限制是两个SQL语句所产⽣的栏位需要是同样的资料种类。另外,当我们⽤ UNION 这个指令时,我们只会看到不同的资料值 (类似 SELECT DISTINCT)。 UNION只是将两个结果联结起来⼀起显⽰,并不是联结两个表。
假设我们有以下的两个表格:
Store_Information 表: store_name Sales Date
Los Angeles $1500 Jan-05-1999
San Diego $250 Jan-07-1999
Los Angeles $300 Jan-08-1999
Boston $700 Jan-08-1999
Internet Sales 表: Date Sales
Jan-07-1999 $250
Jan-10-1999 $535
Jan-11-1999 $320
Jan-12-1999 $750
如果我们要出来所有有营业额 (sales) 的⽇⼦。要达到这个⽬的,我们⽤以下的 SQL 语句:
SELECT Date FROM Store_Information
UNION
SELECT Date FROM Internet_Sales
结果:
Date
Jan-05-1999
Jan-07-1999
Jan-08-1999
Jan-10-1999
Jan-11-1999
Jan-12-1999
UNION在进⾏表链接后会筛选掉重复的记录,所以在表链接后会对所产⽣的结果集进⾏排序运算,删除重复的记录再返回结果。
UNION ALL 这个指令的⽬的也是要将两个 SQL 语句的结果合并在⼀起。 UNION ALL 和 UNION 不同之处在于 UNION ALL 会将每⼀笔符合条件的资料都列出来,⽆论资料值有⽆重复。
如果上述的例⼦我们只⽤UNION ALL的话,则结果会是:
Date
Jan-05-1999
Jan-07-1999
Jan-08-1999
Jan-08-1999
Jan-07-1999
Jan-10-1999
Jan-11-1999
Jan-12-1999
UNION ALL只是简单的将两个结果合并后就返回。这样,如果返回的两个结果集中有重复的数据,那么返回的结果集就会包含重复的数据了。
sql中union多表合并从效率上说,sql union all的执⾏效率要⽐sql union效率要⾼很多,这是因为,使⽤sql union需要进⾏排重,⽽sql union All 是不需要排重的,这⼀点⾮常重要,因为对于⼀些单纯地使⽤分表来提⾼效率的查询,完全可以使⽤sql union All。
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论