我正在使用SQL Server数据库。我有一个表products
,大约有50,000行。
products
表格中的列为id
(主要,自动增量),title
,price
等。
我有第二个表Top_ten_products
,其中列id
(主要,自动增量)product_id
。该表记录了十大产品的记录。
我想从products
表中检索前十个产品。但由于products
表的大小非常大,我正在寻找一种方法,我可以从products
表中弹出特定的id而不遍历整个50,000行。
我该怎么做?提前致谢
答案 0 :(得分:1)
我重读了你的问题,如果你的意思是你的Top_Ten_Products表存储前十名 - 就像最好的10 - 那么它会更有意义。
一种选择是使用INNER JOIN
:
SELECT *
FROM Products P
JOIN Top_Ten_Products T ON P.Product_Id = T.Product_Id
并确保您的Product_Id字段中包含索引。
另一种选择是在IsTopTen的Products表中添加一个字段。
但是,如果您按最新版本存储前10个产品,那么我不建议使用top_ten表 - 在这种情况下不需要。
答案 1 :(得分:0)
遍历50,000条记录就是SQL的作用。
select *
from products
where id in (select product_id from Top_ten_products)
Top_ten_products上的id主要用途没有用 只需将product_id设为PK即可。