[英]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.