`
guoxuepeng
  • 浏览: 38616 次
文章分类
社区版块
存档分类
最新评论

SQL查询效率介绍及9个注意事项

 
阅读更多

一、查询条件精确,针对有参数传入情况

二、SQL逻辑执行顺序

  FROM-->JOIN-->WHERE-->GROUP-->HAVING-->DISTINCT-->ORDER-->TOP

三、横向

查询需要的字段
当在SQL语句中连接多个表时,请使用表的别名并把别名前缀于每个Column上这样一来,就可以减少解析的时间并减少那些由Column歧义引起的语法错误
四、少做重复工作

控制同一语句的多次执行,特别是一些基础数据的多次执行是很多程序员很少注意的
减少多次的数据转换
杜绝不必要的子查询和连接表,子查询在执行计划一般解释成外连接,多余的连接表带来额外的开销
五、关于零时表#与表变量@

如果语句很复杂,连接太多,可以考虑用临时表和表变量分步完成
如果需要多次用到一个大表的同一部分数据,考虑用临时表和表变量暂存这部分数据
如果需要综合多个表的数据,形成一个结果,可以考虑用临时表和表变量分步汇总这多个表的数据
关于临时表和表变量的选择,在数据量较多的情况下,临时表的速度反而更快
SELECT INTO会比CREATE TABLE + INSERT INTO的方法快,但是SELECT INTO会锁定TEMPDB的系统表SYSOBJECTS、SYSINDEXES、SYSCOLUMNS,在多用户并发环境下,容易阻塞其他进程
六、子查询

子查询可以用IN、NOT IN、EXISTS、NOT EXISTS引入
NOT IN、NOT EXISTS的相关子查询可以改用LEFT JOIN代替写法
如果保证子查询没有重复 ,IN、EXISTS的相关子查询可以用INNER JOIN 代替
IN的相关子查询用EXISTS代替
七、索引

避免对索引字段进行计算操作
SELECT ID FROM T WHERE NUM/2=100
应改为:
SELECT ID FROM T WHERE NUM=100*2
避免在索引字段上使用NOT,<>,!=
避免在索引列上使用IS NULL和IS NOT NULL
避免在索引列上出现数据类型转换
避免在索引字段上使用函数
避免建立索引的列中使用空值
不要对索引字段进行多字段连接
WHERE FAME+'. '+LNAME='HAIWEI.YANG'
应改为:
WHERE FNAME='HAIWEI' AND LNAME='YANG'
八、多表连接

多表连接的时候,连接条件必须写全,宁可重复,不要缺漏
连接条件尽量使用聚集索引
九、其他

在可以使用UNION ALL的语句里,使用UNION ALL
避免在WHERE子句中使用IN,NOT IN,OR
避免使用耗费资源的操作,带有DISTINCT,UNION,MINUS,INTERSECT,ORDER BY的SQL语句会启动SQL引擎执行,耗费资源的排序(SORT)功能. DISTINCT需要一次排序操作, 而其他的至少需要执行两次排序
LIKE ‘%5400%’ 这种查询不会引用索引,而LIKE ‘X5400%’则会引用范围索引。

分享到:
评论

相关推荐

    优化sql语句执行效率几点注意事项

    本文将详细探讨几个关于优化SQL语句执行效率的重要注意事项,旨在帮助数据库管理员和开发者提升系统性能。 首先,理解索引的作用与创建策略是优化SQL的第一步。索引可以大幅提高数据检索速度,但并不是所有字段都...

    SQL编程注意事项

    在SQL编程中,有很多细节和...这些注意事项涵盖了SQL编程中的多个方面,从数据处理到性能优化,再到安全性,都是开发高效、稳定数据库系统的关键。理解和掌握这些知识点,将有助于你编写出更加健壮和高效的SQL代码。

    如何提高SQL查询效率

    本文将根据提供的内容,深入解析提高SQL查询效率的关键方法与注意事项。 #### 1. 避免全表扫描 全表扫描是指SQL执行时对整个表的数据进行遍历查找,这种方式非常耗时且占用大量系统资源。为了减少全表扫描的次数,...

    sql 优化语句的几个常用注意事项

    保证数据库性能的sql语句写法,注意事项,使得我们在书写时避免使数据库低效率的执行命令

    基本的Sql编写注意事项

    以下是一些基本的SQL编写注意事项,这些技巧适用于SQL Server 2000等系统,旨在提高查询效率和减少全表扫描。 1. 避免过度使用`IN`操作符。`EXISTS`通常比`IN`更高效,因为它只需找到一个匹配项即可停止查询。例如...

    Oracle SQL规范与优化注意事项

    以下是一些重要的优化策略和注意事项: 1. **避免语法分析重复**:尽量保持SQL语句的标准化,避免因书写格式不同而进行多次语法分析,这会增加解析开销。 2. **使用绑定变量**:共享SQL语句,使用绑定变量而非常量...

    SQL查询效率注意事项小结

    一、查询条件精确,针对有参数传入情况 二、SQL逻辑执行顺序 FROM–&gt;JOIN–&gt;WHERE–&gt;GROUP–&gt;HAVING–&gt;DISTINCT–&gt;ORDER–&gt;TOP 三、横向 查询需要的字段 当在SQL语句中连接多个表时,请使用表的别名并把别名前缀于每...

    写SQL注意事项,以下是提供的一些方法,请参考..

    在编写SQL语句时,有许多重要的注意事项需要遵循,以确保代码的效率、可读性和维护性。以下是一些关键点的详细说明: 1. **多样化解决问题的方法**:不要只关注于得到最终结果,而应探索多种实现方式,如使用...

    SQL查询语句生成器

    6. 使用技巧与注意事项: - 理解基本的SQL语法有助于更好地利用生成器。 - 注意权限管理,确保生成的SQL语句不会对数据库造成破坏。 - 定期更新生成器,以获取最新的功能和安全补丁。 总之,SQL查询语句生成器是...

    一款基于SQL查询ES的Java工具包,支持SQL解析DSL,支持JDBC驱动,支持和Mybatis、Spring集成.zip

    3. 文档:可能包括README文件,介绍了如何安装、配置和使用这个工具包,以及任何注意事项或限制。 4. 构建脚本:如Gradle或Maven的配置文件,帮助用户编译和打包项目。 5. 依赖库:可能包含了工具包运行所必需的外部...

    SQL查询的艺术

    - **注意事项**:过度使用索引会增加数据库维护成本,并可能降低写入操作的速度。 2. **避免全表扫描**: - 使用`WHERE`子句有效地限制返回的数据量。 - 避免在`WHERE`子句中使用复杂的表达式或函数,这可能导致...

    编写高性能的SQL语句注意事项

    本文将探讨编写高性能SQL语句时应注意的一些事项。 1. **处理NULL值**: - `IS NULL` 和 `IS NOT NULL` 操作在含有NULL值的列上不会使用索引,导致全表扫描。因此,尽量避免在索引列上使用NULL值,同时避免在WHERE...

    SQL查询二进制内容

    #### 四、注意事项 1. **数据类型匹配**:确保原始数据类型与转换后类型之间的兼容性。例如,如果`TOOLLIST`字段并非原始的二进制类型,则可能需要根据实际情况调整转换方式。 2. **数据大小限制**:注意到`...

    详解MyBatis直接执行SQL查询及数据批量插入

    3. **注意事项**: - **传入的SQL字符串**:必须按照"MyBatis能识别的格式"编写,如"select XXX as instanceid, XXX as instancename ....",这样才能自动将查询结果映射到Java对象。 - **#{}与${}的区别**:`#{}`...

    U8 BOM全阶查询 sql

    #### 四、实践应用与注意事项 - **适用场景**:适用于中小企业制造业中快速获取产品全阶BOM信息的需求。 - **扩展性**:此脚本可以根据实际业务需求进行调整,例如加入更多的筛选条件或增加其他功能模块。 - **维护...

    掌握SQL查询 提高统计效率.pdf

    7. 使用SQL查询的注意事项 在使用SQL查询时,需要注意查询语句的正确性和数据的安全性。正确编写SQL语句可以避免数据提取错误,而合理地处理数据权限则能保证数据的安全。此外,对于扫描识别出的文字错误或者漏识别...

    循环查询SQL数据库

    以上就是关于“循环查询SQL数据库”的详细解释,包括了不同方法、注意事项和优化策略。理解并熟练掌握这些知识点,对于处理多数据库环境下的数据管理任务将大有裨益。在实际应用中,应根据具体的需求和数据库特性...

    将sql查询结果保存到数据表

    注意事项 - 在执行大规模的数据导入导出操作时,要注意性能问题,避免对生产环境造成影响。 - 如果涉及到敏感数据,还需要注意数据的安全性和隐私保护。 - 当使用`INSERT INTO...SELECT`时,确保目标表有足够的...

Global site tag (gtag.js) - Google Analytics