WEB开发网
开发学院数据库MSSQL Server 提高SQL Server性能的五种方法 阅读

提高SQL Server性能的五种方法

 2008-09-02 09:59:02 来源:WEB开发网   
核心提示: create TABLE #Temp1 (OrderID INT NOT NULL, _OrderDate DATETIME NOT NULL)insert INTO #Temp1 (OrderID, OrderDate)select TOP 5 o.OrderID, o.OrderDat

  create TABLE #Temp1 (OrderID INT NOT NULL, _
  OrderDate DATETIME NOT NULL)
  insert INTO #Temp1 (OrderID, OrderDate)
  select TOP 5 o.OrderID, o.OrderDate
  FROM Orders o ORDER BY o.OrderDate DESC
  select p.ProductName, SUM(od.Quantity) AS ProductQuantity
  FROM #Temp1 t
  INNER join [Order Details] od ON t.OrderID = od.OrderID
  INNER join Products p ON od.ProductID = p.ProductID
  GROUP BY p.ProductName
  ORDER BY p.ProductName
  drop TABLE #Temp1

这些SQL语句会创建一个临时表,将数据插入该表中,将其他数据与该表进行联接,然后除去该临时表。这会导致此查询进行大量I/O操作,因此,可以重新编写查询,使用内嵌视图取代临时表。内嵌视图只是一个可以联接到FROM子句中的查询。所以,您不用在tempdb中的临时表上耗费大量I/O和磁盘访问,而可以使用内嵌视图得到同样的结果:

 select p.ProductName,
  SUM(od.Quantity) AS ProductQuantity
  FROM (
  select TOP 5 o.OrderID, o.OrderDate
  FROM Orders o
  ORDER BY o.OrderDate DESC
  ) t
  INNER join [Order Details] od ON t.OrderID = od.OrderID
  INNER join Products p ON od.ProductID = p.ProductID
  GROUP BY
  p.ProductName
  ORDER BY
  p.ProductName

此查询不仅比前面的查询效率更高,而且长度更短。临时表会消耗大量资源。如果只需要将数据联接到其他查询,则可以试试使用内嵌视图,以节省资源。

上一页  1 2 3 4 5 6 7  下一页

Tags:提高 SQL Server

编辑录入:爽爽 [复制链接] [打 印]
赞助商链接