-1

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

表中的列productsid(primary, auto increment),titleprice

我有第二个表Top_ten_products,其中包含列id(主要、自动增量)product_id、. 这张表记录了前十名产品的记录。

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

我怎样才能做到这一点?提前致谢

4

2 回答 2

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 表——在这种情况下不需要。

于 2013-02-13T12:56:39.950 回答
0

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

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

Top_ten_products 上的 id primary 毫无用处。
只需将 product_id 设为 PK。

于 2013-02-13T12:52:28.020 回答