【发布时间】:2019-10-10 12:17:22
【问题描述】:
我的查询需要 2 个小时才能从数据库中获取 250 万行。我也检查了执行计划。索引也工作正常。
这是查询:
SELECT
GeneralJournalAccountEntry.RecId as [Transaction #],
GENERALJOURNALACCOUNTENTRY.LEDGERACCOUNT AS [LEDGER WITH DIMENSIONS],
DIMENSIONATTRIBUTE.NAME AS [DIMENSION TYPE],
DIMENSIONATTRIBUTELEVELVALUE.DISPLAYVALUE as [DIMENSION VALUE]
FROM
DIMENSIONATTRIBUTE
INNER JOIN
DIMENSIONATTRIBUTEVALUE ON DIMENSIONATTRIBUTE.RECID = DIMENSIONATTRIBUTEVALUE.DIMENSIONATTRIBUTE
INNER JOIN
DIMENSIONATTRIBUTELEVELVALUE ON DIMENSIONATTRIBUTEVALUE.RECID = DIMENSIONATTRIBUTELEVELVALUE.DIMENSIONATTRIBUTEVALUE
INNER JOIN
DIMENSIONATTRIBUTEVALUEGROUPCOMBINATION ON DIMENSIONATTRIBUTELEVELVALUE.DIMENSIONATTRIBUTEVALUEGROUP = DIMENSIONATTRIBUTEVALUEGROUPCOMBINATION.DIMENSIONATTRIBUTEVALUEGROUP
INNER JOIN
GENERALJOURNALACCOUNTENTRY ON DIMENSIONATTRIBUTEVALUEGROUPCOMBINATION.DIMENSIONATTRIBUTEVALUECOMBINATION = GENERALJOURNALACCOUNTENTRY.LEDGERDIMENSION
INNER JOIN
GENERALJOURNALENTRY ON GENERALJOURNALENTRY.PARTITION = GENERALJOURNALACCOUNTENTRY.PARTITION AND GENERALJOURNALENTRY.RECID = GENERALJOURNALACCOUNTENTRY.GENERALJOURNALENTRY
WHERE
DIMENSIONATTRIBUTE.NAME <> 'MainAccount'
【问题讨论】:
-
先阅读stackoverflow.com/help/how-to-ask,然后至少与我们分享执行计划
-
这是 EAV 型号吗?
-
另外,请使用国际通用的度量 - 比如数千、数百万、数十亿......
-
WHERE DIMENSIONATTRIBUTE.NAME <> 'MainAccount'不能使用索引,至少效率不高。
标签: sql sql-server performance query-optimization sql-execution-plan