4

我想从表中选择数百万条记录,我正在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

4 回答 4

9

为您的表字段使用索引以快速获取数据。

参考:

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

于 2013-10-22T07:12:45.777 回答
2

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

  1. 服务器的速度。CPU、内存、网络连接都是影响因素
  2. 如果您正在执行带有条件的 SELECT 语句(即使用 WHERE)或带有 JOINS 的语句,则拥有索引将提高您的性能,尤其是在具有数百万行的表上。哈希表将在大表上产生巨大的净积极影响。
  3. 编写干净的查询。例如,如果您有大量需要从查询中排除的项目,请执行 LEFT JOIN 而不是使用 NOT IN 条件。

这实际上只是冰山一角,但一些最容易实现的东西也会为您提供一些最大的性能提升。

于 2013-10-22T07:13:59.273 回答
2

使用 SELECT 语句的 SQL 快速性能提示的最佳方式

   1:- 检查索引。
   2:- SQL 语句的 WHERE 和 JOIN 部分中使用的所有字段都应该有索引
   3:- 限制工作数据集的大小。
   4:- 仅选择您根据需要选择的字段。
   5:- 删除不必要的表和索引
   6:- 删除外部连接。
   7:- 删除 JOIN 和 WHERE 子句中的计算字段。
于 2018-06-06T05:59:52.963 回答
1

查询的速度取决于行数,但如果您进行适当的优化,则会考虑以下性能因素:

  1. 索引聚集/非聚集
  2. 数据缓存
  3. 表分区
  4. 执行计划缓存
  5. 数据分布

查询将执行得更快。

于 2013-10-22T07:28:59.177 回答