当前位置: 首页 > 知识库问答 >
问题:

在多个相同的表上执行查询和计数行

戎俊
2023-03-14

我为每个日期创建了多个表来存储每个日期的一些信息。例如历史3108、历史0109..所有这些表共享相同的模式。有时候,我需要查询多个表,获取记录的行数和计数。在oracle和SQL Server中,最快的方法是什么?

目前我正在这样做。。。

  1. 当我需要多个表的计数时:为每个表选择计数(*),然后添加
  2. 当我需要多个表的记录时:从表1中选择*,从表2中选择*(基本上为每个表选择*)

如果我们在一个事务中包含所有查询,这会提供更好的性能吗?

共有1个答案

鲜于仰岳
2023-03-14

使用UNION,您可以从共享相同数据类型组和列名的多个表中获取记录。例如,如果您想查看多个表中的所有记录:

(select * from history3108)
union all
(select * from history0109)
union all
(select * from history0209)
/* [...] and so on */

如果您想计算这些表中的所有记录:

select count(*) from (
  (select * from history3108)
  union all
  (select * from history0109)
  union all
  (select * from history0209)
  /* [...] and so on */
);
    < Li > Oracle Docs-UNION[ALL]、INTERSECT、MINUS运算符
 类似资料:
  • 问题内容: 我正在尝试调整SQL查询以检查服务器上每个数据库中存在的特定字段中存在的值。 有100个单独的数据库,我想检查每个数据库的特定记录。 答案可能是使用下面的命令,但是我很难适应它。 我在下面的链接上获得了更大的成功; https://stackoverflow.com/a/18462734/3461845 我需要能够执行以下查询: 并且还为返回的每一行拉回数据库的名称; 任何帮助是极大的

  • 问题内容: 我有一个数据库,每天在其中创建一个表来记录流程实例。这些表标记为MESSAGE_LOG_YYYYMMDD 目前,我想针对所有这些表顺序执行相同的QUERY。我在下面编写了PL / SQL,但陷入了第10行。如何针对此处的所有表成功执行SQL语句? 问题答案: http://download.oracle.com/docs/cd/B10500_01/appdev.920/a96590/a

  • 问题内容: SQL2008。 我有一个测试表: 我用10k测试行填充它。 我运行以下两个查询: 我不知道为什么这两个查询有不同的执行计划。 查询1确实针对UQ_Sale_RowVersion索引进行索引搜索。 查询2对PK_Sale进行索引扫描。 我想查询2做索引查找。 我将不胜感激。 谢谢你。 [编辑] 尝试使用datetime2而不是rowversion。同样的问题。 我也尝试强制使用索引(查

  • 问题内容: 我想测试某个代码段执行的SQL查询越少越好。 似乎有其自己的方法,它将做到这一点。但是由于我没有修补ActiveRecord,所以对我来说没什么用。 RSpec或ActiveRecord是否提供任何官方的公开方式来计算在代码块中执行的SQL查询的数量? 问题答案: 我认为您通过提及回答了您自己的问题,但是这里有: 我建议您看一下后面的代码,并使用它来构建自己的方法,该方法可用于计算查询

  • 我有访问MySQL(5.7)数据库Wicket(8.6)应用程序。在spring-context.xml中建立mysql连接,如下所示: 我遇到的问题是,我需要执行一个非常长的SQL查询,根据所选的时间范围,这可能很容易花费几分钟的时间。我已经解释过,当执行查询时,整个wicket应用程序会减慢到这样的程度,即不再执行其他查询。顺便说一句:长查询只是一个读取查询。所以它不应该锁定一个表。br>如果

  • 问题内容: 我支持第三方软件包的SQL数据库。他们有很多所谓的“影子表”,实际上只是审计表。一切都很好,但是他们的系统不会清理这些表,所以我需要这样做。他们还将在每次升级时添加新的“影子表”,而无需另行通知。我们清除表的旧方法是使用一长串语句,但是此列表变得非常长且难以维护。 为了使清除过程更易于维护并自动捕获新的“影子表”,我编写了以下存储过程。存储过程可以工作,但是我更想找出一种不使用游标和动