簡體   English   中英

查詢優化

[英]query optimization

我需要來自4個不同類別的最新4個產品。 該查詢不起作用

SELECT 
  ProductID,ProductName,thumb
  FROM 
  tbproduct 
  WHERE 
  status =2 
GROUP BY 
`CATEGORYID` 
ORDER BY 
`ProductID` DESC 
LIMIT 4

所以我首先按所有記錄排序。並使用以下查詢...

SELECT 
ProductID, ProductName, thumb 
FROM 
  (
  SELECT 
  ProductID,ProductName,thumb,CATEGORYID 
  FROM 
  tbproduct 
  WHERE 
  status =2 
  ORDER BY 
  `ProductID` DESC
  ) AS tmp 
GROUP BY 
`CATEGORYID` 
ORDER BY 
`ProductID` DESC 
LIMIT 4

這個查詢很慢,任何人都可以向我建議它的快速查詢。 我使用MySQL。

如果您僅使用:

SELECT 
  ProductID,ProductName,thumb,CATEGORYID 
  FROM tbproduct 
  WHERE status=2
  GROUP BY CATEGORYID
  ORDER BY ProductID DESC
  LIMIT 4
 SELECT 
  Max(ProductID), ProductName,thumb
  FROM 
  tbproduct 
  WHERE 
  status =2 
GROUP BY 
`CATEGORYID` 
ORDER BY 
 ProductID DESC 
LIMIT 4

這行不通嗎?


不確定這是否有幫助,請參閱更新的查詢。 請參閱Group-by Aggragate的用法

注意: 這將無法可靠地返回其他列。 請在此處查找左自我排斥的加入

SELECT 
ProductID, ProductName, thumb 
FROM tbproduct 
WHERE ProductID in (
  SELECT max(ProductID)
  FROM tbproduct
  WHERE status = 2
  GROUP BY CATEGORYID
  ORDER BY ProductID DESC
  LIMIT 4
) ORDER BY ProductID DESC 

那應該做。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM