SQL Server高效运行总的来说有两种方式:

一、 扩容,提高服务器性能,显著提高CPU、内存,解决磁盘I/O瓶颈。硬件的提升是立竿见影的,而且是风险小,在硬件更新换代非常快的年代,

当SQLServer 速度感觉慢的时候,第一选择是更换更新的,更强的服务器!

二、优化应用程序

这个是次优选择。

SQL 优化,可以考虑从以下几个方面:

1.内嵌视图与临时表  [源自MSDN的文章《五种提高 SQL 性能的方法》]
  临时表 - 在 tempdb 中的临时表会导致查询进行大量 I/O 操作和磁盘访问,临时表会消耗大量资源。
  内嵌视图 -使用内嵌视图取代临时表。内嵌视图只是一个可以联接到 FROM 子句中的查询。如果只需要将数据联接到其他查询,则可以试试使用内嵌视图,以节省资源。

例如,如果要查询最新五个定单的有关信息,您首先需要知道是哪些定单。这可以使用返回定单 ID 的 SQL 查询来检索。此数据就会存储在临时表(这是一个常用技术)中,然后与 Products 表进行联接,以返回这些定单售出的产品数量:

    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. cocos2dx-lua_修改源码流程(cocos2dx-3.10、win7、Cocos Code IDE1.2)
  2. C# 实现字符串去重
  3. tengine-2.1.0 + lua + base64
  4. 转载---CSS3实现曲线阴影和翘边阴影
  5. Spring 框架概述
  6. 7款外观迷人的HTML5/CSS3 3D按钮特效
  7. 武汉科技大学ACM:1006: 华科版C语言程序设计教程(第二版)例题4.17
  8. crtmpserver初探
  9. iOS swift lazy loading
  10. Linux入门之常用命令(3)
  11. vue新手入门——vue-cli搭建
  12. POJ2318 TOYS[叉积 二分]
  13. 如何在ES5与ES6环境下处理函数默认参数
  14. Infiniband 网络性能测试
  15. ARE 212 - Problem Set 5
  16. ROS使用FLIR品牌的相机
  17. hql和sql的一些区别
  18. echarts 调整图表 位置 的方法
  19. 转载:第2章 Nginx的配置 概述《深入理解Nginx》(陶辉)
  20. Kali安装教程(VMWare)

热门文章

  1. socket和webService的区别
  2. php-msf 源码解读【转】
  3. 【基于url权限管理 shiro(一)】--基础
  4. is not eligible for getting processed by all BeanPostProcessors
  5. Javascript继承,再谈
  6. python之six用法
  7. Protostuff序列化分析
  8. java.lang.IllegalArgumentException异常 配置文件的问题
  9. BZOJ_4818_[Sdoi2017]序列计数_矩阵乘法
  10. Windows上安装配置SSH教程(3)——在Windows系统上安装与配置WinSCP