原文发布时间为:2009-10-29 —— 来源于本人的百度文章 [由搬家工具导入]

1. SQL优化的原则是:

将一次操作需要读取的BLOCK数减到最低,即在最短的时间达到最大的数据吞吐量。  
调整不良SQL通常可以从以下几点切入:  
检查不良的SQL,考虑其写法是否还有可优化内容  
检查子查询   考虑SQL子查询是否可以用简单连接的方式进行重新书写  
检查优化索引的使用  
考虑数据库的优化器  
   

2. 避免出现SELECT   *   FROM   table     语句,要明确查出的字段。    
   
3. 在一个SQL语句中,如果一个where条件过滤的数据库记录越多,

    定位越准确,则该where条件越应该前移。  
   
4. 查询时尽可能使用索引覆盖。即对SELECT的字段建立复合索引,

    这样查询时只进行索引扫描,不读取数据块。  
   

5. 在判断有无符合条件的记录时建议不要用SELECT   COUNT   (*)和select   top   1   语句。  
   
6. 使用内层限定原则,在拼写SQL语句时,将查询条件分解、分类,

    并尽量在SQL语句的最里层进行限定,以减少数据的处理量。  
   
7. 应绝对避免在order   by子句中使用表达式。  
   
8. 如果需要从关联表读数据,关联的表一般不要超过7个。  
   
9. 小心使用   IN   和   OR,需要注意In集合中的数据量。建议集合中的数据不超过200个。  
   
10. <>   用   <   、   >   代替,>用>=代替,<用<=代替,这样可以有效的利用索引。  
   
11. 在查询时尽量减少对多余数据的读取包括多余的列与多余的行。  
   
12. 对于复合索引要注意,例如在建立复合索引时列的顺序是F1,F2,F3,

     则在where或order   by子句中这些字段出现的顺序要与建立索引时的字段顺序一致,

    且必须包含第 一列。只能是F1或F1,F2或F1,F2,F3。否则不会用到该索引。

13. 多表关联查询时,写法必须遵循以下原则,这样做有利于建立索引,提高查询效率。

     格式如下

     select   sum(table1.je)   from   table1   table1,     table2     table2,               

     table3     table3   where   (table1的等值条件(=))   and   (table1的非等值条件)

     and   (table2与table1的关联条件)   and (table2的等值条件)   and   (table2的非等值条件)    

     and (table3与table2的关联条件)   and   (table3的等值条件)   and   (table3的非等值件)。  
     注:关于多表查询时from     后面表的出现顺序对效率的影响还有待研究。  
   
14. 子查询问题。对于能用连接方式或者视图方式实现的功能,不要用子查询。

     例如:select   name    from   customer   where  

     customer_id   in   (   select     customer_id   from   order   where   money>1000)。

     应该用如下语句代替:select   name   from   customer  

    inner   join   order   on     customer.customer_id=order.customer_id  

    where   order.money>100。  
   
15. 在WHERE   子句中,避免对列的四则运算,

     特别是where   条件的左边,严禁使用运算与函数对列进行处理。

     比如有些地方   substring   可以用like代替。  
   
16. 如果在语句中有not   in(in)操作,

     应考虑用not   exists(exists)来重写,最好的办法是使用外连接实现。  
     
17. 对一个业务过程的处理,应该使事物的开始与结束之间的时间间隔越短越好,

     原则上做到数据库的读操作在前面完成,数据库写操作在后面完成,避免交叉。  
   

18. 请小心不要对过多的列使用列函数和order   by,group   by等,谨慎使用disti软件开发t。  
   
19. 用union   all   代替   union,数据库执行union操作,

     首先先分别执行union两端的查询,

     将其放在临时表中,然后在对其进行排序,过滤重复的记录。  
     当已知的业务逻辑决定query   A和query   B中不会有重复记录时,

     应该用union   all代替union,以提高查询效率。

SQL语句效率问题的几点总结的更多相关文章

  1. 为什么存储过程比sql语句效率高?

    存储过程经过预编译处理 而SQL查询没有 SQL语句需要先被数据库引擎处理成低级的指令 然后才执行 -------------------------------------------------- ...

  2. 查询最新记录的sql语句效率对比

    在工作中,我们经常需要检索出最新条数据,能够实现该功能的sql语句很多,下面列举三个进行效率对比 本次实验的数据表中有55万条数据,以myql为例: 方式1: SELECT * FROM t_devi ...

  3. 优化、分析Mysql表读写、索引等操作的sql语句效率优化问题

    为什么要优化: 随着实际项目的启动,数据库经过一段时间的运行,最初的数据库设置,会与实际数据库运行性能会有一些差异,这时我们 就需要做一个优化调整. 数据库优化这个课题较大,可分为四大类: >主 ...

  4. SQL语句执行效率及分析(note)

    1.关于SQL查询效率,100w数据,查询只要1秒,与您分享: 机器情况p4: 2.4内存: 1 Gos: windows 2003数据库: ms sql server 2000目的: 查询性能测试, ...

  5. sql语句or与union all的执行效率比较

    看到一篇文章是讲sql语句or与union all的执行效率比较的,以前没怎么注意这个问题,感觉文章写的不错,转来一看. 文章原链接:http://www.cunyoulu.com/zhuanti/q ...

  6. SQL Server中的SQL语句优化与效率问题

    很多人不知道SQL语句在SQL SERVER中是如何执行的,他们担心自己所写的SQL语句会被SQL SERVER误解.比如: select * from table1 where name='zhan ...

  7. mysql优化(三)–explain分析sql语句执行效率

    mysql优化(三)–explain分析sql语句执行效率 mushu 发布于 11个月前 (06-04) 分类:Mysql 阅读(651) 评论(0) Explain命令在解决数据库性能上是第一推荐 ...

  8. 统计sql语句执行效率

    --统计sql语句执行效率SELECT (total_elapsed_time / execution_count)/1000 N'平均时间ms' ,total_elapsed_time/1000 N ...

  9. 如何测试sql语句性能,提高执行效率

    有时候我们经常为我们的sql语句执行效率低下发愁,反复优化后,可还是得不到提高 那么你就用这条语句找出你sql到底是在哪里慢了 示例: SET STATISTICS io ON        SET ...

随机推荐

  1. 精通SpringBoot--分页查询功能的实现

    本文将介绍如何实现分页查询功能,推荐使用github的pagehelper插件实现(事实上大家基本都是这么干的),但本文的实现方式和大多数不同,废话少说,现在就带着大家看看区别在哪里.先看pom.xm ...

  2. 初学Python不知道做什么项目好?来看看练手项目如何?

    对于初学者来说,在学习编程的初期,由于基础知识点的学习是比较无聊的,所以大家可能会有所反感,为了减弱大家的反感,我给大家带来一个简单的小项目——实现屏保计时器,这个项目就算是刚学Python的小伙伴, ...

  3. 笔记-python-变量作用域

    笔记-python-变量作用域 1.      python变量作用域和引用范围 1.1.    变量作用域 一般而言程序的变量并不是任何对象或在任何位置都可以访问的,访问权限决定于这个变量是在哪里赋 ...

  4. 文件的特殊权限(SUID,SGID,SBIT)

    文件的一般权限:r w x  对应 421  文件的特殊权限:SUID SGID SBIT对应 421  文件的隐藏权限:chattr设置隐藏权限,lsattr查看文件的隐藏权限. 文件访问控制列表: ...

  5. appcompat_v7\res\values-v21\themes_base.xml:158: error: Error: No resource

    C:\DevelopSoft\workspace\appcompat_v7\res\values-v21\themes_base.xml:158: error: Error: No resource ...

  6. CA证书申请、认证原理

    (一) 证书的申请 密钥文件的格式用OpenSSL生成的就只有PEM和DER两种格式,PEM的是将密钥用base64编码表示出来的,直接打开你能看到一串的英文字母,DER格式是二进制的密钥文件,直接打 ...

  7. Algorithms(fourth edition)——无向图

    1.设计图基本操作API 2.用什么数据结构来表示图并实现API 要求:(1)要预留足够空间 (2)实例方法实现要快 三个选择: 邻接矩阵:布尔矩阵,不满足条件一,而且无法表示平行边 边的数组:不满足 ...

  8. 【Search In Rotated Sorted Array】cpp

    题目: Suppose a sorted array is rotated at some pivot unknown to you beforehand. (i.e., 0 1 2 4 5 6 7  ...

  9. thinkphp3.2接入支付宝支付接口(PC端)

    下载支付宝接口包    点击这里        提取密码:aryp 整个接口核心类文件 alipay.config.php是相关参数的配置文件 alipayapi.php 是支付宝接口入口文件 not ...

  10. 01背包 HDU-1203

    这道题在网上找的题解基本都是用min找出概率最小,然后用1减去的答案,我在这采用max来做,虽然只是换了公式,但是其中出现的问题还是想记录下. I NEED A OFFER! Time Limit: ...