Sql 如何处理两个数据量巨大的表?
我面临着一个严重的问题,一个表有2亿的数据,另一个表有服务类型的数据,这与巨大的数据表连接在一起 我已经创建了聚集索引、主键索引和非聚集覆盖索引。我已经将Varchar列修改为Char以用于空间,我已经使用了所有筛选条件 我的桌子看起来像:Sql 如何处理两个数据量巨大的表?,sql,sql-server,Sql,Sql Server,我面临着一个严重的问题,一个表有2亿的数据,另一个表有服务类型的数据,这与巨大的数据表连接在一起 我已经创建了聚集索引、主键索引和非聚集覆盖索引。我已经将Varchar列修改为Char以用于空间,我已经使用了所有筛选条件 我的桌子看起来像: (2 crores data) CREATE TABLEA ( ApplicationNO Varchar(25)PK, Service_type VARCHAR(10), service_id VARCHAR(10), ISActive Char(1))
(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'
在创建索引之后,我还是花了很多时间尝试其他方法
请告诉我可能的方法 使用以下代码: 等同于
A.Service\u Id=B.Service\u Id
而不是A.ServiceId=B.ServiceName
As服务名称与服务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'
别害羞。告诉我们您创建了哪些索引。另外,编辑查询,使其语法正确。(例如,什么是“DateFilters”?什么是
s.isacditive
)。这些表有主键吗?请不要使用像croreyes这样的印度词,它有primarykey和DateFilters(从date到Todate),Isactive意味着只获取庞大数据表中的所有活动记录“DateFilters fromDate和Todate”不是有效的SQL,你的两张桌子都没有日期。请不要遗漏可能重要的内容。我不明白您在您的查询中给@Kavin Chakaravarthias的内容。服务id对应于服务名称。这是一个拼写错误。很抱歉,我只使用了服务id