我有以下表格:获取数据
CREATE TABLE [dbo].[TurbinaGas5](
[id] [int] IDENTITY(1,1) NOT NULL,
[id_central] [int] NULL,
[presion_agua_alta] [float] NULL,
[presion_agua_media] [float] NULL,
[presion_agua_baja] [float] NULL,
[temperatura_gases_entrando_tg] [float] NULL,
[fecha] [datetime] NOT NULL,
[Eficiencia_Camara_Combustion] [float] NULL,
CONSTRAINT [PK_TurbinaGas5] PRIMARY KEY CLUSTERED
(
[id] ASC
)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY]
) ON [PRIMARY]
CREATE TABLE [dbo].[TurbinaVapor7](
[id] [int] IDENTITY(1,1) NOT NULL,
[id_central] [int] NULL,
[presion_vapor_alta] [float] NULL,
[presion_vapor_recalentado_caliente] [float] NULL,
[consumo_auxiliares] [float] NULL,
[potencia_neta_medida] [float] NULL,
[eficiencia_termica_bruta] [float] NULL,
[fecha] [datetime] NULL,
CONSTRAINT [PK_TV7] PRIMARY KEY CLUSTERED
(
[id] ASC
)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY]
) ON [PRIMARY]
这些表不relationated,altough他们没有相同的列,其数据以相同的日期时间戳记(费歇字段)保存。现在,我的问题是我想从两个表中选择一些由datetime过滤的字段(任何表的日期,因为它应该是相同的)。
也许你在问,你为什么不把所有的字段保存在同一张表中,因为它们被保存在同一时间戳?这是因为每个表包含近200个字段,并且它们属于工厂中的不同部分(这个项目是针对热电厂的)。
两个表仅共享字段:id_central作为外键。
我试图建立这样的查询:
select tg5.presion_agua_alta, tv7.flujo_vapor_alta from
TurbinaGas5 tg5 inner join TurbinaVapor7 tv7 on tg5.id_central=tv7.id_central where tg5.fecha between CONVERT(DATETIME,'2017-04-18 01:50:00',102) and CONVERT(DATETIME,'2017-04-19 09:41:00',102)
但这查询返回数百万行,并杀死了服务器。谢谢
例如,假设该表存储以下数据:
SET IDENTITY_INSERT [dbo].[TurbinaVapor7] ON
INSERT [dbo].[TurbinaVapor7] ([id], [id_central], [presion_vapor_alta], [presion_vapor_recalentado_caliente], [consumo_auxiliares], [potencia_neta_medida], [eficiencia_termica_bruta], [fecha]) VALUES (11983, 1, 4, 5, 6, 7, 9, CAST(0x0000A75A0128A180 AS DateTime))
INSERT [dbo].[TurbinaVapor7] ([id], [id_central], [presion_vapor_alta], [presion_vapor_recalentado_caliente], [consumo_auxiliares], [potencia_neta_medida], [eficiencia_termica_bruta], [fecha]) VALUES (11985, 1, 9, 10, 11, 12, 13, CAST(0x0000A75A011826C0 AS DateTime))
SET IDENTITY_INSERT [dbo].[TurbinaVapor7] OFF
/****** Object: Table [dbo].[TurbinaGas5] Script Date: 04/19/2017 18:29:50 ******/
SET IDENTITY_INSERT [dbo].[TurbinaGas5] ON
INSERT [dbo].[TurbinaGas5] ([id], [id_central], [presion_agua_alta], [presion_agua_media], [presion_agua_baja], [temperatura_gases_entrando_tg], [fecha], [Eficiencia_Camara_Combustion]) VALUES (12024, 1, 1, 2, 3, 4, CAST(0x0000A75A0128A180 AS DateTime), 5)
INSERT [dbo].[TurbinaGas5] ([id], [id_central], [presion_agua_alta], [presion_agua_media], [presion_agua_baja], [temperatura_gases_entrando_tg], [fecha], [Eficiencia_Camara_Combustion]) VALUES (12029, 1, 3, 4, 5, 6, CAST(0x0000A75A01391C40 AS DateTime), 7)
SET IDENTITY_INSERT [dbo].[TurbinaGas5] OFF
我想获得这两个表是在CADA containend 2017年4月19日之间的18:00:00.000和2017年4月19日19:00:00.000
希望你能帮助我,谢谢
根据您的数据样本,您是否想将您的记录匹配限制为具有相同'[fecha]'值的记录?如果没有这种类型的限制,那么您指定的SELECT将在[TurbinaVapor7]中的'[id_central]'= 1的所有记录与时间范围内的[[TurbinaGas5]'中的[id_central]'= 1的每条记录相匹配你选择了。所以,如果每个表中有1000行,则总共将检索1000 * 1000 = 1000000行。每行10000行,你将检索100000000行,这将杀死大多数服务器。 –