簡體   English   中英

為什么我的SQL MsAccess查詢這么慢?

[英]Why is my SQL MsAccess query so slow?

基本上我有一個SQL查詢,它是10個查詢的並集,如下所示。 為什么這個查詢這么慢? 我花了超過一分鍾的時間來運行,當我在此查詢中使用帶有DCount的文本框時,它使我的表單崩潰。

SELECT
ESP_Fisico.ESP_SubTipo_ID,
ESP_Fisico.ESP_Unidade_ID,
ESP_Facturacao.Item_TAG,
MIN(ESP_Facturacao.[1a_MesAno]) AS Data,
MIN(ESP_Facturacao.[1a_Faturado]) AS Valor,
'1 a' AS Tarefa,
'1' AS Control,
min(ESP_Administrativas.Novo_Pos_2010),
min(ESP_SubTipo.Descrição) AS SubTipo,
min(ESP_Unidade.Descricao) AS Unidade,
min(ESP_Facturacao.ID)
FROM ESP_Unidade INNER JOIN (((ESP_TAG LEFT JOIN ESP_Facturacao ON ESP_TAG.ID = ESP_Facturacao.ESP_Tag_ID) INNER JOIN (ESP_SubTipo INNER JOIN ESP_Fisico ON ESP_SubTipo.ID = ESP_Fisico.ESP_SubTipo_ID) ON ESP_TAG.ID = ESP_Fisico.ESP_Tag_ID) INNER JOIN ESP_Administrativas ON ESP_TAG.ID = ESP_Administrativas.ESP_Tag_ID) ON ESP_Unidade.ID = ESP_Fisico.ESP_Unidade_ID
WHERE (((ESP_Facturacao.Item_TAG) Not In
(SELECT ESP_Facturacao.Item_TAG
FROM ESP_Facturacao
WHERE (((ESP_Facturacao.[1a_MesAno]) Is Not Null))))
AND ((ESP_Administrativas.Data_Aut_Funcion) Is Null))
Group By ESP_Facturacao.Item_TAG, ESP_Fisico.ESP_SubTipo_ID, ESP_Fisico.ESP_Unidade_ID, ESP_Facturacao.Item_TAG

您已經在從ESP_Facturacao選擇數據,再次以無效的方式在同一表中查詢在Access中實現了Where子句的(與大多數其他RDBMS一樣)。 因此,您應該在內部查詢中的表名稱上創建別名SELECT AA.Item_TAG FROM ESP_Facturacao As AA WHERE (((AA.[1a_MesAno]) Is Not Null))

SELECT
ESP_Fisico.ESP_SubTipo_ID,
ESP_Fisico.ESP_Unidade_ID,
ESP_Facturacao.Item_TAG,
MIN(ESP_Facturacao.[1a_MesAno]) AS Data,
MIN(ESP_Facturacao.[1a_Faturado]) AS Valor,
'1 a' AS Tarefa,
'1' AS Control,
min(ESP_Administrativas.Novo_Pos_2010),
min(ESP_SubTipo.Descrição) AS SubTipo,
min(ESP_Unidade.Descricao) AS Unidade,
min(ESP_Facturacao.ID)
FROM ESP_Unidade INNER JOIN (((ESP_TAG LEFT JOIN ESP_Facturacao ON ESP_TAG.ID = ESP_Facturacao.ESP_Tag_ID) INNER JOIN (ESP_SubTipo INNER JOIN ESP_Fisico ON ESP_SubTipo.ID = ESP_Fisico.ESP_SubTipo_ID) ON ESP_TAG.ID = ESP_Fisico.ESP_Tag_ID) INNER JOIN ESP_Administrativas ON ESP_TAG.ID = ESP_Administrativas.ESP_Tag_ID) ON ESP_Unidade.ID = ESP_Fisico.ESP_Unidade_ID
WHERE (((ESP_Facturacao.Item_TAG) Not In
(SELECT AA.Item_TAG FROM ESP_Facturacao As AA 
WHERE (((AA.[1a_MesAno]) Is Not Null))))
AND ((ESP_Administrativas.Data_Aut_Funcion) Is Null))
Group By ESP_Facturacao.Item_TAG, ESP_Fisico.ESP_SubTipo_ID, ESP_Fisico.ESP_Unidade_ID, ESP_Facturacao.Item_TAG

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM