从数据库表中选择特定主键

时间:2013-02-13 12:45:34

标签: sql sql-server performance sql-server-2008 tsql

我正在使用SQL Server数据库。我有一个表products,大约有50,000行。

products表格中的列为id(主要,自动增量),titleprice等。

我有第二个表Top_ten_products,其中列id(主要,自动增量)product_id。该表记录了十大产品的记录。

我想从products表中检索前十个产品。但由于products表的大小非常大,我正在寻找一种方法,我可以从products表中弹出特定的id而不遍历整个50,000行。

我该怎么做?提前致谢

2 个答案:

答案 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即可。