[英]How to select and export the large data in big database to excel - SQL
**我的任务是从数据库中选择和导出大量监控数据**
我的数据库有两个大表来存储监控数据。
- 表MonitoringDataInfo (~60M 行):有一些字段id(pk)、stationId、createdAt和一组索引( stationId asc、 createdAt desc)
- 表监控数据(~300M 行):有一些字段id (pk)、dataId、indicator、value、unit和一组索引( dataId asc、 indicator asc)
(MonitoringDataInfo的ID是MonitoringData的数据ID的外键)
我在下面做一个查询:
SELECT
[Info].[id], [Info].[sentAt], [Data].[id] AS [Data.id], [Data].[indicator] AS [Data.indicator], [Data].[value] AS [Data.value]
FROM
[monitoring_data_info] AS [Info]
LEFT OUTER JOIN
[monitoring_data] AS [Data]
ON [Info].[id] = [Data].[dataId]
WHERE
[Info].[stationId] = N'EKTjhVrZibUE7h55b6tu'
AND [Info].[createdAt] BETWEEN N'2021-10-07 07:14:51.000 +00:00' AND N'2021-10-14 07:14:51.000 +00:00'
ORDER BY
[Info].[createdAt] ASC;
==> 此查询在超过10分钟后返回69253行。
我的问题是:
- 我应该如何优化执行时间以及数据库?
先谢谢了!
在以下任一列上创建索引
id, stationId, createdAt, sentAt column of
monitoring_data_info table
and dataId column of monitoring_data table
根据数据,您可以创建索引,特别是在连接列和 where 子句列上
另外,不要使索引超载,因为我可以看到您已经对索引进行了分组,尽管它包含必要的列,但组索引中的其他列可能会导致重新使用数据,同样建议在刚刚加入的列上建立索引并根据您的发送最近编辑
该查询是在 Excel 中吗?
以最少的转换或查询将这两个工作表导出到数据库表中可能会更快。 然后在数据库引擎中进行Joining/Grouping,针对此类进行了更优化。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.