很郁闷的问题,为什么设置的日期间隔越短,查询越慢?
为什么设置的日期间隔越短,查询越慢?
如果日期间隔为 5天以内数据就查不出来了。数据表 SendColl 的数据5万左右,BK_BusinessData表有20万存放的是明细,TreeInfo 有1000多条数据。存储过程如下:
ALTER PROCEDURE [dbo].[SendColl_SD_LIST_OUT]
@bmID varchar(50),
@startDate varchar(50),
@endDate varchar(50),
@humanID varchar(50),
@startID varchar(50),
@endID varchar(50),
@num1 int
AS
DECLARE @s varchar(8000)
DECLARE @sqlStr varchar(8000)
SET @s = ''
SELECT @s=@s+',['+RTRIM(bkName)+'] = SUM(CASE b.bkID when '''+RTRIM(bkID)+''' then b.doCount else 0 end)'
FROM UseCompany_BK
ORDER BY bkID ASC
SET @sqlStr = '
SELECT
选择=a.s,
序号=CAST(a.sendID as varchar(30)),
发票号码=a.PID,
单位名称=IsNull(a.companyName,''''),
地址=IsNull(a.sendAddress,''''),
段别=a.sendInArea,
电话=IsNull(a.receiveTel,''''),
发行员=a.markEr,
转到部门=c.treeName
'+ @s +',
备注=a.contentStr
FROM SendColl a,BK_BusinessData b,TreeInfo c
WHERE a.sendID = b.collID
AND a.sendInAreaID like c.areaID + ''%''
AND Len(c.areaID)>5
AND c.treeTypeName=''FUNCTION''
AND a.addEr = '''+ @bmID +'''
AND (isOut =1 OR isOut = 2) AND b.collTypeName=''SEND''
'
IF @num1 = 0
SET @sqlStr = @sqlStr + ' AND num1 = 0 '
ELSE
IF @num1 = 1
SET @sqlStr = @sqlStr + ' AND num1 = 1'
ELSE
SET @sqlStr = @sqlStr + ' AND (num1 = 0 OR num1 = 1) '
IF @startDate <> '' AND @endDate <> ''
SET @sqlStr = @sqlStr+ ' and a.addDate >= '''+ @startDate +' 0:00:00'' and a.addDate < '''+ @endDate +' 23:59:59'''
if @humanID <> ''
SET @sqlStr = @sqlStr + ' and c.treeID like '''+ @humanID +'%'' '
if @startID <> '' and @endID <> ''
SET @sqlStr = @sqlStr + ' and sendID >='+ @startID +' and sendID <='+@endID
SET @sqlStr = @sqlStr + '
GROUP BY a.PID,a.sendID,a.companyName,a.sendAddress,a.receiveTel,a.sendinarea,a.marker,a.contentStr,a.addEr,c.treeName,a.s
ORDER BY a.sendID desc
'
EXEC(@sqlStr)