sql查询选择数百万条记录非常快

时间:2013-10-22 07:06:02

标签: sql-server sql-server-2008-r2

我想从表中选择数百万条记录,而我正在使用select查询。

目前只需几分钟即可获取数据。

我可以快速得到它。

我使用的是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

提前致谢。

4 个答案:

答案 0 :(得分:6)

使用表格字段的索引来快速获取数据。

参考:

http://www.tutorialspoint.com/sql/sql-indexes.htm

答案 1 :(得分:1)

有几个因素会影响到这一点。快速列出要查看的内容:

  1. 服务器的速度。 CPU,内存,网络连接都是因素
  2. 如果您正在使用条件(即使用WHERE)或使用JOINS进行SELECT语句,则使用索引可以提高性能,尤其是在具有数百万行的表上。哈希表会在一张大桌子上做很大的净积极。
  3. 编写干净的查询。例如,如果您需要从查询中排除大量项目,请执行LEFT JOIN而不是使用NOT IN条件。
  4. 这真的只是冰山一角,但一些最容易实施的东西也将为你提供一些最大的性能提升。

答案 2 :(得分:0)

查询的速度取决于行数,但是如果您采取适当的优化来考虑性能因素,例如:

  1. 索引群集/非群集
  2. 数据缓存
  3. 表格分区
  4. 执行计划缓存
  5. 数据分发
  6. 查询将执行得更快。

答案 3 :(得分:0)

SQL使用SELECT语句的快速性能提示

   1:- Check Indexes. 
   2:- There should be indexes on all fields used in the WHERE and JOIN portions of the SQL statement
   3:-  Limit Size of Your Working Data Set.
   4:-  Only Select Fields You select as Need.
   5:- Remove Unnecessary Table and index 
   6:- Remove OUTER JOINS. 
   7:-  Remove Calculated Fields in JOIN and WHERE Clauses.