【发布时间】:2011-02-22 10:46:21
【问题描述】:
我正在接管一个非常小的利基分类广告网站(可能每天 5 个新条目),该网站运行良好,直到 Google 和 Bing 成功。每个类别、子类别和广告都存储在数据库 (MS SQL 2005) 中,因此他们抓取的每个页面都会遇到这些查询并占用 CPU。
为了解决这个问题,我的老板希望我将所有数据卸载到 XML 文件中并改为查询这些文件(哇?)。我认为这必须比必要的工作多得多,但作为一名业余 DBA,除了调整查询、使用存储过程、创建适当的索引等之外,我没有任何可靠的选择......
XML 参数有什么依据吗?你会怎么做才能避开这个蜘蛛问题?
类别:
SELECT Category.CatID, Category.CatName, Category.Remove, CategorySub.SubCatID, CategorySub.SubCatName, CategorySub.TitleText, CategorySub.ShowPrice, CategorySub.ShowLocation, CategorySub.Remove
FROM Category INNER JOIN CategorySub ON Category.CatID = CategorySub.CatID
WHERE (((Category.Remove)=0) AND ((CategorySub.SubCatID)=" & intSubCatID & ") AND ((CategorySub.Remove)=0))
子类别:
SELECT CategorySub.CatID, CategorySub.SubCatName, CategorySub.SubCatOrder, CategorySub.SubCatID, CategorySub.Remove FROM CategorySub
WHERE (((CategorySub.CatID)=" & intCatID & ") AND ((CategorySub.Remove)=0))
ORDER BY CategorySub.SubCatOrder
广告:
SELECT Ad.AdID, Ad.ModifiedDate, Ad.CatID, CategorySub.SubCatName, Ad.Title, Ad.ShortDesc, Ad.Price, Ad.Location, Count(Pictures.PictureID) AS CountOfPictureID
FROM (Ad INNER JOIN CategorySub ON Ad.SubCatID = CategorySub.SubCatID) LEFT JOIN Pictures ON Ad.AdID = Pictures.AdID
WHERE (((Ad.SubCatID)=" & intSubCatID & ") AND ((Ad.Activated)<>0) AND ((Ad.Remove)=0))
GROUP BY Ad.AdID, Ad.ModifiedDate, Ad.CatID, CategorySub.SubCatName, Ad.Title, Ad.ShortDesc, Ad.Price, Ad.Location
ORDER BY Ad.ModifiedDate DESC
【问题讨论】: