-1

如果您要查看此页面: http: //www.storeboard.com/directory/california/sanfrancisco/,您会发现一个几乎无法访问的页面,因为它可能需要 30 多秒才能加载。原因是有一个计数器可以计算每个类别中的业务成员数量。我想知道是否有一种方法可以加快我现有的脚本,因为现在我们有超过一百万的成员,并且当前状态下的脚本是无用的。这是我当前的脚本:

SELECT COUNT(MemberID) AS MembersInCountyCat
FROM Member
WHERE NYKACountyID = @NYKACountyID
AND (
        NYKACatID IN (
            SELECT NYKACatID
            FROM NYKACat
            WHERE ParentID = @NYKACatID
        )
        OR
        NYKACatID = @NYKACatID
    )
AND ProfileTypeID <> 1

任何关于如何加快 sql 脚本速度的建议将不胜感激。

提前谢谢了,

新杰克

4

2 回答 2

1

请试一试。将 NYKACat 条件移动到连接中可能会有所帮助,我认为它不会伤害它。如果 NYKACat.ParentID = @NYKACatID 或 NYKACat.NYKACatID = @NYKACatID 消除了 NYKACat 中的大部分行,那么它可以预先执行此操作。

with (nolock)
如果您不能接受脏读,则允许脏读,然后将其关闭

SELECT COUNT(Member.MemberID) AS MembersInCountyCat
FROM  Member  with (nolock) 
JOIN  NYKACat with (nolock)
  on  NYKACat.NYKACatID = Member.NYKACatID
 and (NYKACat.ParentID = @NYKACatID or NYKACat.NYKACatID = @NYKACatID)
WHERE Member.NYKACountyID = @NYKACountyID
  and Member.rofileTypeID <> 1
于 2012-09-20T19:05:49.367 回答
0
SELECT COUNT(MemberId) AS MembersInCountyCat
FROM Member
    INNER JOIN NYKACat ON Member.NYKACatId = NYKACat.NYKACatId 
WHERE NYKACountyId = @NYKACountyId
    AND (NYKACat.NYKACatId = @NYKACatId OR NYKACat.ParentId = @NYKACatId)
    AND ProfileTypeId <> 1

确保您有关于 ProfileTypeID、Member.NYKACountyId 和 Member.NYKACatId 的索引。

于 2012-09-20T18:28:09.880 回答