`

SQL SERVER 性能优化若干

阅读更多
SQL SERVER 性能优化若干:

1.选择最有效率的表名顺序(只在基于规则的优化器中有效)    
  
1.1SQLSERVER的解析器按照从右到左的顺序处理FROM子句中的表名,因此FROM子句中写在最后的表(基础表driving table)将被最先处理,在FROM子句中包含多个表的情况下,必须选择记录条数最少的表作为基础表,当SQLSERVER处理多个表时,会运用排序及合并的方式连接它们, 

   首先,扫描第一个表(FROM子句中最后的那个表)并对记录进行排序;然后扫描第二个表(FROM子句中最后第二个表);最后将所有从第二个表中检索出的记录与第一个表中合适记录进行合并 

   例如: 表 TAB1 16,384 条记录表 TAB2 5 条记录,选择TAB2作为基础表 (最好的方法) select count(*) from tab1,tab2 执行时间0.96秒,选择TAB2作为基础表 (不佳的方法) select count(*) from tab2,tab1 执行时间26.09秒;

1.2 如果有3个以上的表连接查询,那就需要选择交叉表(intersection table)作为基础表,交叉表是指那个被其他表所引用的表    

例如: 
   EMP表描述了LOCATION表和CATEGORY表的交集 
   SELECT * 
   FROM LOCATION L, 
   CATEGORY C, 
   EMP E   ———— emp表是交集,所以放入最后位置
   WHERE E.EMP_NO BETWEEN 1000 AND 2000 
   AND E.CAT_NO = C.CAT_NO 
   AND E.LOCN = L.LOCN 
    
   将比下列SQL更有效率 
   SELECT * 
   FROM EMP E , 
   LOCATION L , 
   CATEGORY C 
   WHERE E.CAT_NO = C.CAT_NO 
   AND E.LOCN = L.LOCN 
   AND E.EMP_NO BETWEEN 1000 AND 2000

2.WHERE子句中的连接顺序  
  
   SQLSERVER采用自下而上的顺序解析WHERE子句,根据这个原理,表之间的连接必须写在其他WHERE条件之前,那些可以过滤掉最大数量记录的条件必须写在WHERE子句的末尾    
   例如: 
   (低效,执行时间156.3秒) 
   SELECT * 
   FROM EMP E 
   WHERE SAL > 50000 
   AND JOB = ’MANAGER’ 
   AND 25 < (SELECT COUNT(*) FROM EMP WHERE MGR=E.EMPNO);    
   (高效,执行时间10.6秒) 
   SELECT * 
   FROM EMP E 
   WHERE 25 < (SELECT COUNT(*) FROM EMP WHERE MGR=E.EMPNO)  ————此步骤过滤的信息最多。where过滤是从上至下的,所以过滤最多的放在最上面
   AND SAL > 50000 
   AND JOB = ’MANAGER’;

3.SELECT子句中避免使用’*’。
当你想在SELECT子句中列出所有的COLUMN时,如果使用动态SQL列引用’*’虽然是一个方便的方法,但这是一个非常低效的方法。因为,SQLSERVER在解析的过程中,会将’*’依次转换成所有的列名,这个工作是通过查询数据字典完成的,这意味着将耗费更多的时间 



分享到:
评论

相关推荐

    sql server 2005 Experiment1_sql server 2005

    SQL Server 2005还引入了数据库引擎优化顾问和SQL Server Profiler,前者用于分析查询性能并提供优化建议,后者则用于实时监控数据库活动,两者都是诊断和性能调优的重要工具。通过“开始/程序/Microsoft sql server...

    SQL Server 数据库基础

    SQL Server 2000在原有的基础上引入了若干新特性: - 对XML的支持,使得数据库能够存储和处理XML格式的数据。 - 支持多个SQL Server实例在同一台服务器上运行,提高了资源利用率。 - 添加了新的数据类型,如bigint...

    java语言的分页查询功能(mysql和sql server)

    2. 使用ROW_NUMBER()优化:在SQL Server中,使用`ROW_NUMBER()`结合子查询可以避免`OFFSET`的性能问题,尤其是在大数据量时。 3. 计算总页数:在Java中,通常需要计算总页数,可以通过单独查询获取总记录数再除以每...

    C# dataGridView1 控件的使用SQL Server数据绑定

    3. **性能优化**: - 考虑使用存储过程或视图来提高数据检索效率。 - 对于大数据量的情况,可以使用分页机制减少每次加载的数据量。 通过以上步骤,我们可以有效地利用dataGridView1控件结合SQL Server数据库实现...

    sql server mysql 帮助文档 全

    4. **性能优化**:索引策略、查询优化器和性能监视工具,提升数据库性能。 5. **存储过程和函数**:自定义SQL代码的可重用逻辑,包括过程、函数和触发器。 6. **复制技术**:数据库的同步和分发,支持数据的分布式...

    SQL Server数据库服务器负载均衡集群的实现

    当访问、查询 SQL Server 数据库的时候 ICX 可以根据实际情况分配服务器来提供服务,大大提高服务速度和优化性能,完成负载均衡。 2.ICX 可以同时连接多台数据库(2-16 台,具体连多少台,看客户的具体需求而定)...

    Microsoft SQL Server 2008

    **五、维护与性能优化** 定期进行数据库维护,包括备份、恢复、性能监控和调整,是确保SQL Server 2008高效运行的关键。SQL Server Performance Monitor、动态管理视图(DMV)和查询分析器等工具能帮助管理员诊断和...

    Microsoft SQL Server 2000 SP4 升级补丁.rar

    3. **性能优化**:SP4包含了一些性能改进,例如查询优化器的优化、内存管理的改进和并发处理能力的提升,这使得SQL Server 2000在处理大量数据和高并发请求时更加高效。 4. **兼容性与稳定性**:SP4更新了数据库...

    sql server 2005 java驱动包

    String url = "jdbc:sqlserver://localhost:1433;databaseName=myDatabase"; String username = "myUsername"; String password = "myPassword"; Connection conn = DriverManager.getConnection(url, username,...

    数据库SQL Server学习PDF

    “第10章.pdf”、“数据库系统第8章-2018.pdf”和“第7章.pdf”虽然没有明确的标题,但按照常规,这些章节可能涉及索引、性能优化、备份恢复策略、分布式数据库等内容,这些都是数据库管理员日常工作中需要关注的...

    基于Java和SQL Server 2000

    - **高性能**:SQL Server 2000支持多种优化技术,包括索引、缓存机制等,确保数据访问的高效性。 - **安全性**:SQL Server 2000提供了多层次的安全防护机制,包括用户认证、角色权限管理等,保障数据的安全性。 ...

    Microsoft SQL Server 2008技术内幕

    通过学习这些内容,开发者可以更有效地管理和优化SQL Server 2008中的数据查询,提高数据库的性能和可用性。同时,提供的源代码和数据库文件提供了动手实践的机会,帮助读者将理论知识转化为实际操作技能。无论你是...

    Jsp+Sql Server的BBS小系统

    此外,SQL Server还提供了事务处理、索引、视图、存储过程等功能,以提升数据库的性能和安全性。 **BBS系统功能** 1. **用户注册与登录**:用户可以注册新账号,填写用户名、密码等信息,通过邮箱或手机验证进行...

    实现SQL优化的若干方法

    ### 实现SQL优化的若干方法 #### 一、引言 在现代信息技术中,数据库的性能直接影响着应用程序的响应时间和用户体验。SQL优化是一项关键的技术,它可以帮助我们提高查询效率、减少资源消耗,从而提升整体系统的...

    SQLServer数据库分页查询

    - 缺点: 对于非常大的数据集,仍需注意性能优化。此方案平均查询 100 次所需时间为 15 秒。 #### 四、总结 通过对比以上五种分页查询方案,我们可以看出,使用 ROW_NUMBER() 函数的方法在本次测试中的性能表现最佳...

    sqlserver2008数据库实例练习

    在2008版本中,引入了若干新特性,如数据类型增强、备份和恢复改进、性能优化工具等。 在这个练习中,你可能会遇到以下知识点: 1. **创建表**:数据库实例通常包含若干张表,如学生表、课程表、成绩表等。你需要...

    基于SQL Server数据库索引的创建与优化分析.pdf

    本文首先介绍了索引的相关概念和分类,然后以SQL Server的样本数据库(Northwind)为例,创建和使用聚簇索引和非聚簇索引,最后得出了索引创建和使用过程中的若干结论,旨在为SQL Server数据库索引创建和优化工作方面...

    SQL server数据库课程设计之基于Java图书管理系统

    同时,为了提高性能,我们可能需要对数据库进行优化,如合理设置索引、避免全表扫描等。 总的来说,"基于Java的图书管理系统"是一个集成了Java编程和SQL Server数据库技术的综合性项目,它涵盖了数据库设计、用户...

    DMV查询_相关视图与函数_sqlserver_

    标题“DMV查询_相关视图与函数_sqlserver_”明确指出了我们将讨论的是如何利用SQL Server中的DMV(动态管理视图)和函数来进行查询和分析。DMV是SQL Server提供的一种机制,用于查看数据库引擎的运行状态和内部信息...

    SQL Server2000

    通过以上知识点的学习,我们不仅能够理解 SQL Server 2000 的基本概念和操作方法,还能够掌握如何进行有效的数据查询、性能优化以及安全性管理。这对于从事 IT 行业的人来说是非常实用和必要的技能。

Global site tag (gtag.js) - Google Analytics