`
hz_chenwenbiao
  • 浏览: 1010605 次
  • 性别: Icon_minigender_1
  • 来自: 广州
社区版块
存档分类
最新评论

SQL优化-索引 (六)改善SQL语句(转)

阅读更多

二、改善SQL语句

  很多人不知道SQL语句在SQL SERVER中是如何执行的,他们担心自己所写的SQL语句会被SQL SERVER误解。比如:

  select * from table1 where name='zhangsan' and tID > 10000

  和执行:

  select * from table1 where tID > 10000 and name='zhangsan'

  一些人不知道以上两条语句的执行效率是否一样,因为如果简单的从语句先后上看,这两个语句的确是不一样,如果tID是一个聚合索引,那么后一句仅仅从表的10000条以后的记录中查找就行了;而前一句则要先从全表中查找看有几个name='zhangsan'的,而后再根据限制条件条件tID>10000来提出查询结果。

  事实上,这样的担心是不必要的。SQL SERVER中有一个“查询分析优化器”,它可以计算出where子句中的搜索条件并确定哪个索引能缩小表扫描的搜索空间,也就是说,它能实现自动优化。

  虽然查询优化器可以根据where子句自动的进行查询优化,但大家仍然有必要了解一下“查询优化器”的工作原理,如非这样,有时查询优化器就会不按照您的本意进行快速查询。

  在查询分析阶段,查询优化器查看查询的每个阶段并决定限制需要扫描的数据量是否有用。如果一个阶段可以被用作一个扫描参数(SARG),那么就称之为可优化的,并且可以利用索引快速获得所需数据。

  SARG的定义:用于限制搜索的一个操作,因为它通常是指一个特定的匹配,一个值得范围内的匹配或者两个以上条件的AND连接。形式如下:

  列名 操作符 <常数 或 变量>

  或

  <常数 或 变量> 操作符列名

  列名可以出现在操作符的一边,而常数或变量出现在操作符的另一边。如:

  Name=’张三’

  价格>5000

  5000<价格

  Name=’张三’ and 价格>5000

  如果一个表达式不能满足SARG的形式,那它就无法限制搜索的范围了,也就是SQL SERVER必须对每一行都判断它是否满足WHERE子句中的所有条件。所以一个索引对于不满足SARG形式的表达式来说是无用的。

分享到:
评论

相关推荐

    收获,不止SQL优化--抓住SQL的本质1

    - **性能问题的根源**:随着系统数据量的增长和并发访问需求的增加,原本简单的SQL语句可能变得复杂,导致性能下降。 - **识别问题SQL**:在大规模系统中,找出哪些具体的SQL语句影响了系统性能是一项挑战。 - **...

    SQL优化 SQL优化软件 SQL优化工具

    3. **建议与改写**:自动提供优化建议,包括修改SQL语句结构、创建或调整索引、优化连接方式等,有时甚至可以直接改写SQL语句以提高性能。 4. **历史记录与报告**:记录SQL语句的执行历史,生成性能报告,便于跟踪...

    数据库 创建索引 sql oracle

    "数据库创建索引SQL Oracle" 数据库索引是数据库性能优化的重要手段之一。创建索引可以提高查询速度,降低数据库的负载,提高数据的安全性。本文将详细介绍数据库创建索引的原则、分类、创建方法、管理和优化等方面...

    如何写出高效率的SQL语句--SQL优化技巧

    如何写出高效率的SQL语句--SQL优化技巧 SQL 优化技巧是提高数据库性能的关键所在。编写高效率的 SQL 语句需要对索引的机制有一定了解,以下是关于索引的知识点: 索引的优点和局限 索引可以提高查询的效率,但会...

    SQL查询优化--索引的使用与管理[收集].pdf

    - 执行计划是SQL Server查询优化器根据SQL语句生成的一种预估的执行策略,它不实际执行查询,但能帮助理解数据库如何处理查询,以减少不必要的计算和资源消耗。 - 获取执行计划的方法有两种:一种是在执行SQL语句...

    sqlserver管理索引优化SQL语句

    sqlserver管理索引优化SQL语句

    sql考试复习资料-索引--触发器-存储过程-详细查询语句

    存储过程是一组预编译的SQL语句,封装在数据库中,可以按名称调用。它们可以提高性能,减少网络流量,增强安全性和可维护性。存储过程还可以包含控制流语句,允许条件执行和循环,使得复杂操作能在数据库层面高效地...

    收获,不止SQL优化--抓住SQL的本质

    1. **查询优化**:SQL语句的编写直接影响到查询效率。优化查询包括合理使用索引、避免全表扫描、减少子查询、正确使用JOIN操作以及避免使用NOT IN和OR等低效运算符。 2. **索引策略**:索引是提高查询速度的关键。...

    18 SQL优化--其他SQL的优化.doc

    根据提供的文档标题、描述、标签以及部分内容,我们可以深入探讨关于SQL优化的相关知识点,特别是针对MySQL中的表分析、检查、优化以及其他SQL语句的优化策略。 ### 表分析、检查与优化 #### 表分析(Analyze ...

    索引的SQL语句优化

    ### 知识点详解:“索引的SQL语句优化” #### 重要性 在数据库管理中,SQL(Structured Query Language)语句的优化是确保系统高效运行的关键环节。特别是在大型数据库环境中,一次低效的SQL查询可能会导致整个...

    SQL-Serve实验5-索引和视图-.doc

    1. **索引创建**:熟练掌握通过SQL Server图形界面工具以及Transact-SQL语句(`CREATE INDEX`)来创建索引。 2. **索引查看**:学会使用SQL Server图形界面工具和Transact-SQL语句(`sp_helpindex`)来查看索引信息...

    18 SQL优化--查询的优化.doc

    本文档将详细介绍如何通过分析SQL语句执行情况来优化查询效率,包括如何利用MySQL的状态变量来评估查询行为,以及如何定位并解决低效SQL语句。 #### 二、使用`SHOW STATUS`命令获取SQL执行频率 通过`SHOW STATUS`...

    SQL优化-系列文档

    3. **绑定变量**:理解绑定变量的概念,以及它们如何减少硬解析,提高SQL语句的复用性,从而改善系统性能。 4. **表和分区优化**:探讨分区技术,如范围分区、列表分区、哈希分区,以及组合分区,如何在大型表上...

    高性能SQL优化--个人项目开发中总结

    SQL语句的执行计划包含了多种访问方式,如全表扫描、索引范围扫描、连接操作等。优化器的选择也会影响执行计划,Oracle提供了基于规则的优化器(RBO)和基于成本的优化器(CBO)。RBO不依赖统计数据,而是通过迭代选择...

    SQL性能优化以及索引的优化

    优化SQL语句可以从以下几个方面着手: 1. **查询重构**:简化复杂的查询,避免冗余的JOIN操作,使用子查询或临时表可能更高效。理解并合理使用SQL内置函数和操作符,如IN、EXISTS等。 2. **使用适当的JOIN类型**:...

    通过分析SQL语句的执行计划优化SQL

    通过分析SQL语句的执行计划优化SQL 本文档主要介绍了与SQL调整有关的内容,涉及多个方面:SQL语句执行的过程、ORACLE优化器、表之间的关联、如何得到SQL执行计划、如何分析执行计划等内容。通过从浅入深的方式了解...

    SQL优化-实践 数据库优化 数据库理论

    SQL优化是数据库优化的重要组成部分,因为大部分数据库资源都消耗在执行SQL语句上。 首先,SQL语句的编写方式直接影响其执行效率。固定和规范的SQL书写习惯能够帮助数据库解析器更好地理解并执行语句,减少解析时间...

    sql优化-oracle数据库.ppt

    《SQL优化——Oracle数据库》 ...总之,SQL优化涉及多个层面,从编写高效的SQL语句,到合理利用数据库特性,都需要综合考虑。通过深入理解数据库工作原理和SQL执行机制,可以有效提升Oracle数据库的性能和响应速度。

    sqlserver自动生成sql语句工具sqlserver转oracle

    在压缩包子文件的文件名"ms转sql语句.exe"中,我们可以推测这可能是一个用于将SQL Server语句转换为Oracle兼容格式的可执行程序。这样的工具通常会提供用户友好的界面,让用户导入SQL Server的数据库元数据,然后...

    05-VIP-Mysql索引优化实战二.pdf

    Mysql索引优化实战二 本文档主要介绍了Mysql索引优化的实战经验,着重于分页查询优化和Join关联查询优化。 一、分页查询优化 ...通过对索引的合理使用和合理的SQL语句优化,我们可以提高Mysql查询的执行效率。

Global site tag (gtag.js) - Google Analytics