2013-02-13 50 views
-1

我正在使用SQL Server数据库。我有一个约有50,000行的表products从数据库表中选择特定的主键

products表的列是id(伯,自动增量),titleprice

我有一个第二表Top_ten_products与列id(伯,自动增量),product_id。该表保留了前十名产品的记录。

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

我该怎么做?在此先感谢

+0

50'000行 - 这是**没什么** - 这甚至不是“中型”的SQL Server!如果你有合适的指数,在50'000中排名前10位应该低于1秒。 – 2013-02-13 13:53:54

回答

0

遍历50,000条记录是SQL所做的。

select * 
from products 
where id in (select product_id from Top_ten_products) 

而Top_ten_products上的id primary没有任何用处。
只需make product_id即可。

1

我重读了你的问题,如果你的意思是你的Top_Ten_Products表存储了前10名 - 最好的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表格 - 在这种情况下无需使用top_ten表格。

相关问题