如何使用庞大的数据处理两个表?

时间:2015-05-23 11:31:16

标签: sql sql-server

我面临严重问题,一个表有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'

创建索引后仍然需要花费大量时间我已经尝试过其他方式。

请建议我可能的方式。

1 个答案:

答案 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'