English 中文(简体)
SQL 查询在给条款添加新行时慢得多 SQL 查询
原标题:SQL query runs much slower when add additional line to WHERE clause

我有一个简单的查询, 当我在条款中添加一条新行时, 多CH 运行速度会慢一点。 我使用 SQL 服务器 16.0. 4120.1 (ExPRESS)

查询 1( 运行15 秒或以上) :

SELECT HSP.ServiceProviderID AS SP, *
FROM ALPCensus
LEFT JOIN ALPPriorApproval PA ON PA.SSNumber = ALPCensus.SSNumber  
LEFT JOIN ALPHeader ON ALPHeader.PartnerID = PA.PartnerID
LEFT JOIN HomeServiceProviders HSP ON HSP.ServiceProviderID = ALPHeader.ServiceProviderID
LEFT JOIN HomeMastResident HMR ON HMR.SSNumber = ALPCensus.SSNumber  
WHERE [Day] BETWEEN PA.StartDate AND PA.EndDate
AND [Day] <  2024-05-21 
AND PA.IsPending = 0
AND HSP.IsCapitation = 0
AND [Status] IN ( * , P )
AND Billed = 0
AND HSP.ServiceProviderID =  136   -- This is the line missing from Query #2

查询 2 (与上一个查询相同,但没有最后一行。 运行需要小于一秒) :

SELECT HSP.ServiceProviderID AS SP, *
FROM ALPCensus
LEFT JOIN ALPPriorApproval PA ON PA.SSNumber = ALPCensus.SSNumber  
LEFT JOIN ALPHeader ON ALPHeader.PartnerID = PA.PartnerID
LEFT JOIN HomeServiceProviders HSP ON HSP.ServiceProviderID = ALPHeader.ServiceProviderID
LEFT JOIN HomeMastResident HMR ON HMR.SSNumber = ALPCensus.SSNumber  
WHERE [Day] BETWEEN PA.StartDate AND PA.EndDate
AND [Day] <  2024-05-21 
AND PA.IsPending = 0
AND HSP.IsCapitation = 0
AND [Status] IN ( * , P )
AND Billed = 0

以下是对问题1的执行计划:

< a href=>""https://i.static.net/rKyZKkkZ.png" rel="不跟随 nofollow noreferrer" > 进入此图像描述

以下是第2个问题的计划:

< a href=>""https://i.sstatic.net/JfjRyOw2.png" rel="不跟随 nofollow noreferrer" > 输入此图像描述

这些是我的数据库设置(如果有区别的话):

< a href=>""https://i.static.net/mLwFTGGD.png" rel="没有跟随 nofollow noreferrer" > 进入此图像描述

如果我将线条设置为 < code> 和 HSP. Service providerID is not NULL , 它也会运行得很快。 我检查了确保列 < code> HSP. Service providerID 是一型而非某种无趣的数据类型。 我运行的服务器似乎有大量的 CPU 和 RAM 资源。 我相信我有我所需要的全部索引 。

问题回答

如果您只是在寻找 Captition = 0 和 ServivividerId = 136 是否只要加入 ALP 头板的表格, 并符合源表格中设定的条件?

SELECT HSP.ServiceProviderID AS SP, *
FROM ALPCensus
LEFT JOIN ALPPriorApproval PA ON PA.SSNumber = ALPCensus.SSNumber  
LEFT JOIN ALPHeader ON ALPHeader.PartnerID = PA.PartnerID
INNER JOIN
    ( 
    SELECT ServiceProviderID
     FROM HomeServiceProviders
     WHERE IsCapitation = 0 AND ServiceProviderID = 136
     ) AS HSP ON HSP.ServiceProviderID = ALPHeader.ServiceProviderID
LEFT JOIN HomeMastResident HMR ON HMR.SSNumber = ALPCensus.SSNumber  
WHERE [Day] BETWEEN PA.StartDate AND PA.EndDate
AND [Day] <  2024-05-21 
AND PA.IsPending = 0
AND [Status] IN ( * , P )
AND Billed = 0




相关问题
SQL SubQuery getting particular column

I noticed that there were some threads with similar questions, and I did look through them but did not really get a convincing answer. Here s my question: The subquery below returns a Table with 3 ...

难以执行 REGEXP_SUBSTR

I m 查询Oracle 10g。 我有两张表格(样本数据见下文)。 i m 试图提取一些领域

SQL Query Shortcuts

What are some cool SQL shorthands that you know of? For example, something I learned today is you can specify to group by an index: SELECT col1, col2 FROM table GROUP BY 2 This will group by col2

PHP array callback functions for cleaning output

I have an array of output from a database. I am wondering what the cleanest way to filter the values is example array Array ( [0] => Array ( [title] => title 1 ...

OracleParameter and DBNull.Value

we have a table in an Oracle Database which contains a column with the type Char(3 Byte). Now we use a parameterized sql to select some rows with a DBNull.Value and it doesn t work: OracleCommand ...

Running numbers in SQL

I have a SQL-statement like this: SELECT name FROM users WHERE deleted = 0; How can i create a result set with a running number in the first row? So the result would look like this: 1 Name_1 2 ...

How to get SQL queries for each user where env is production

I’m developing an application dedicated to generate statistical reports, I would like that user after saving their stat report they save sql queries too. To do that I wrote the following module: ...

热门标签