2013-02-13 85 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表格。

相關問題