获取各类别下前3条产品信息,请达人帮助优化!致谢!

birdxxxx 2005-08-02 06:22:27
有两个表:Category表(产品目录表)和Product表(产品表),Category表里有两级,表结构如下:
CategoryID,ParentCategoryID
最上级的ParentCategoryID值为0

Product表中的数据目前大约3000条

我想获取每个目录下面的前3条数据,用如下方法:

SELECT A.ProductID,A.ProductName,A.CategoryID FROM Product A,Category B
WHERE A.ProductID IN
(SELECT TOP 3 ProductID FROM Product WHERE CategoryID=A.CategoryID)
AND A.CategoryID=B.CategoryID AND B.ParentFrontCategoryID IN
(SELECT FrontCategoryID FROM FrontCategory WHERE ParentFrontCategoryID='0')
ORDER BY A.FrontCategoryID

语句倒是比较简单,可在查询分析器里执行的平均时间要用到9秒,太慢了,客户受不了。
我不知道如何优化了,请达人提供优化解决方案,100分致谢!
...全文
109 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
iwl 2005-08-29
  • 打赏
  • 举报
回复
SELECT
A.ProductID,
A.ProductName,
A.CategoryID
FROM
Product A,Category B
WHERE
A.ProductID IN(SELECT TOP 3 ProductID FROM Product WHERE CategoryID=A.CategoryID)
AND
A.CategoryID=B.CategoryID
AND
EXISTS(SELECT 1 FROM FrontCategory WHERE FrontCategoryID=B.ParentFrontCategoryID AND ParentFrontCategoryID='0')
ORDER BY
A.FrontCategoryID
子陌红尘 2005-08-02
  • 打赏
  • 举报
回复
在关联字段都已建索引的前提下,SQL 语句稍改一下:
----------------------------------------------------------------------------------
SELECT
A.ProductID,
A.ProductName,
A.CategoryID
FROM
Product A,Category B
WHERE
A.ProductID IN(SELECT TOP 3 ProductID FROM Product WHERE CategoryID=A.CategoryID)
AND
A.CategoryID=B.CategoryID
AND
EXISTS(SELECT 1 FROM FrontCategory WHERE FrontCategoryID=B.ParentFrontCategoryID AND ParentFrontCategoryID='0')
ORDER BY
A.FrontCategoryID
bugchen888 2005-08-02
  • 打赏
  • 举报
回复
“A.CategoryID=B.CategoryID”在这两列上建索引。
“ParentFrontCategoryID='0'”在这列上建索引。
birdxxxx 2005-08-02
  • 打赏
  • 举报
回复
抱歉二位,我刚才给分结贴,系统老是提示:

,50,50,
只有未结、非0分贴子才可以结贴给分

我不知道是什么问题,明天再来试一下。
birdxxxx 2005-08-02
  • 打赏
  • 举报
回复
抱歉二位,我刚才给分结贴,系统老是提示:

,50,50,
只有未结、非0分贴子才可以结贴给分

我不知道是什么问题,明天再来试一下。
birdxxxx 2005-08-02
  • 打赏
  • 举报
回复
谢谢二位回答,刚从外面回来,送分先。
birdxxxx 2005-08-02
  • 打赏
  • 举报
回复
查询语句里面的FrontCategory实际上就是Category,写的时候没注意改过来。

22,209

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server 疑难问题
社区管理员
  • 疑难问题社区
  • 尘觉
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧