2013-10-22 61 views
2

我想從表中選擇數百萬條記錄,並且我正在使用select查詢。sql查詢非常快速地選擇百萬條記錄

目前需要幾分鐘才能獲取數據。

我可以很快得到它。

我正在使用SQL Server 2008 R2。

我使用下面的查詢: -

SELECT  
    sum(Orders.BusinessVolumeTotal) as BusinessVolume, 
    sum(Orders.CommissionableVolumeTotal) as CommissionableVolume, 
    OrderTypes.OrderTypeDescription, 
    Orders.OrderTypeID 
FROM 
    Orders 
INNER JOIN 
    OrderTypes ON Orders.OrderTypeID = OrderTypes.OrderTypeID 
WHERE 
    Orders.OrderDate > convert(DATETIME, '{0}') 
    and Orders.OrderDate < convert(DATETIME, '{1}') 
GROUP BY 
    Orders.OrderTypeID, OrderTypes.OrderTypeDescription 

在此先感謝。

+2

這很大程度上取決於(a)你的表格是什麼樣子的,(b)你有什麼樣的索引,(c)你的查詢是什麼樣的,以及(d)你的硬件(服務器)支持什麼。 ..這個問題是**方式太廣泛**回答.... –

+0

謝謝@marc_s,我編輯了我的問題。 – AnandMeena

+0

這仍然留下表和索引結構未答覆..... –

回答

1

有將進入這幾個因素。快速列表看看:

  1. 您的服務器的速度。 CPU,內存,網絡連接都將是因素
  2. 如果您正在使用條件(即使用WHERE)或使用JOINS執行SELECT語句,那麼使用索引會提高性能,尤其是在具有數百萬行的表上。哈希表將在大型桌子上實現巨大的淨收益。
  3. 編寫乾淨的查詢。例如,如果您有大量需要從查詢中排除的項目列表,請執行LEFT JOIN而不是使用NOT IN條件。

這實際上只是冰山一角,但最容易實現的一些東西也將爲您提供一些最大的性能提升。

0

查詢的速度取決於行數,但如果你做適當的優化服用性能的因素,如:

  1. 索引集羣/非集羣
  2. 數據緩存
  3. 表分區
  4. 執行計劃緩存
  5. 數據分佈

查詢將執行得更快。

+0

你可以給每個案例的例子/鏈接 – adam

相關問題