我面临严重问题,一个表有2亿个数据,另一个表有服务类型数据加入巨大的数据表
我已经使用覆盖索引创建了Clustered index,Primary key和NonClustered。我已经将Varchar列修改为Char以用于空间目的我已经使用了所有过滤条件
我的表格如下:
(2 crores data)
CREATE TABLEA (
ApplicationNO Varchar(25)PK,
Service_type VARCHAR(10),
service_id VARCHAR(10),
ISActive Char(1))
(300 records)
CREATE TABLEB(
service_name Varchar(25),
service_id VARCHAR(10),
service_type VARCHAR(10),
Department_id Char(3))
我的查询:
Select A.Servicename,
Count(A.ApplicationNo),
sum(case when p.IS_Active='Y' then 1 else 0 end )as'Complted',
sum(case when p.IS_Active='N' then 1 else 0 end )as'InComplete'
from TableA A INNER JOIN TableB B(Service Data)
ON A.ServiceId = B.ServiceId AND A.ServiceType = B.ServiceType
Where DateFilters fromDate and ToDate AND S.ISActive = 'Y'
创建索引后仍然需要花费大量时间我已经尝试过其他方式。
请建议我可能的方式。
答案 0 :(得分:0)
使用此代码:
等同于A.Service_Id = B.Service_id
而不是A.ServiceId = B.ServiceName
由于服务名称与服务ID
不匹配使用此代码:
Select A.Servicename,
Count(A.ApplicationNo),
sum(case when p.IS_Active='Y' then 1 else 0 end )as'Complted',
sum(case when p.IS_Active='N' then 1 else 0 end )as'InComplete'
from TableA A INNER JOIN TableB B(Service Data)
ON A.ServiceId = B.Service_id AND A.ServiceType = B.ServiceType
Where DateFilters fromDate and ToDate AND S.ISActive = 'Y'