Omi*_*eta 7 sql-server-2008 sql-server
我有一个非常简单的查询,它在活动监视器和其他统计信息中显示为在我的整个数据库服务器上具有最多的逻辑读取。
SELECT MAX(RESULT_DATE) FROM TABLEX mm WITH (NOLOCK)
JOIN TABLEX_RESULTS mr WITH (NOLOCK) on mr.ID = mm.ID
WHERE DAYS IS NOT NULL AND mm.ORDER_ID = 12345
Run Code Online (Sandbox Code Playgroud)
TABLEX 大约有 2800 万行
TABLEX_RESULTS 大约有 600 万行
我可以在这里做什么来减少此查询的逻辑读取次数?我对如此简单的查询如何拥有如此大量的逻辑读取感到困惑。
谢谢
索引定义(来自评论)
tableX
IndexName PK Type Key1 Key2
IDX_MP_MEDS 0 B AA ORDER_ID MEDPASS_DATE
IDX_MP_MEDS_ID_AND_ORDER_ID 0 B A MEDPASS_DATE
IX_MP_MEDS_ROOT_ORDER_ID 0 B DA ROOT_ORDER_ID MEDPASS_DATE
PK_MP_MED PK 1 C A MEDPASS_MEDS_ID
tablex_resulsts
Run Code Online (Sandbox Code Playgroud)
JNK*_*JNK 10
请注意,这些是页面阅读。这是相关的。
可能性:
我猜您对这些标准中的至少一个进行了表或聚集索引扫描,并且该表很宽,这会导致读取大量数据,而不管您实际需要多少数据。