第一个问题:
如果你涉及到的两个表的数据可以用union 来连接的话
那么
select ... from a where...
union
select ... from b where...
跟
select ... from
表a union all 表b)
where只是写法不同,效率因该是一样的下面这个没有看懂你想做什么
如果你涉及到的两个表的数据可以用union 来连接的话
那么
select ... from a where...
union
select ... from b where...
跟
select ... from
表a union all 表b)
where只是写法不同,效率因该是一样的下面这个没有看懂你想做什么
解决方案 »
- if object_id('#t') is not null drop table #t; 为什么无效
- SQL SERVER2005到SQL SERVER2000
- 我正在学JAVA基础,现在想学会用数据库,需要多久能学到用的程度?
- 求助:一个MS-SQL触发器的写法(高手请进)
- 这样的要求用一条SQL语句可以实现吗?
- 请教高手:关于分类查询记录数
- 为什么只能备份到服务器的硬盘上,可以让他备份到客户机的硬盘上吗?如何修改?? 如何删除服务器上备份的文件??
- 關於seed,請高手指教.
- 用来作为开发是安装SQLServer2000企业版好还是SQLServer2000开发版好?
- 关于外连接的问题。
- 菜鸟请教SQL中查询统计的一个问题
- 急!!!怎样在不同的sql server 2000数据库之间传递数据?
1:
select ... from a where...
union
select ... from b where...(是表A和表B的所有数据进行链接)。用
select ... from
(表a union all 表b)
where.....
这里的表A和表B的数据可以是筛选以后的。所以,相对来说,后者的数据量比前者的少。二:
使用存储过程,比较灵活地尽可能少的数据进行union的操作,但是它的缺点是在这动态查询的时候需要对即将运行的T-SQL语句进行一下编译,然后再运行,也就是说,SQL编译即将运行的T-SQL语句快还是对数据进行Union的操作快,我想,在不同的情况下两者是有区别的,毕竟那是数据量的问题,数据量多,我觉得是用存储过程进行动态搜索然后把结果进行Union比用所有数据进行Union以后再条件筛选会快吧?
如果是几百万、几千万,最好是做另外的静态统计表,每周、每月的更新一次,报表查询则直接从静态统计表里面取数据