原则,多数数据库都是从 左到右的顺序处理条件,把能过滤更多数据的条件放在前面,过滤少的条件放后面

SQL1: select * from employee

            where salary >1000     --条件1,过滤的数据较少

                 and   dept_id='01'    --条件2,过滤的数据比条件1多

上面的SQL就不符合我们的原则了,应该把过滤数据更多的条件放在前面,因此改为下面这样更好

 select * from employee

              where   dept_id='01'     --过滤更多数据的条件放在前面

                  and   salary > 1000

在关系数据库中,除在数据库的物理设计、关系规范化等方面进行优化外,一个简单直接有效的方法是对SQL语句进行调整,减少计算量和内存需求,提高响应速度。 
  a.对同一表格进行多个选择运算 
  选择条件的排列顺序对性能有较大影响,因为不仅影响索引的选取,而且关系到临时表的大小。现以下面的查询语句为例进行说明: 
  select * from customer 
  where city=’beijing’ and fname=’li’ 
  若表中存在100万条记录,其中city=’beijing’的10万,fname=’li’的为2万,其中city=’beijing’的 为2千,在SQL Server中,查询条件的选取是从左到右使用的,因而,执行第一个条件结果返回一个10万行的临时表,然后再从中进行选择,从而得到 最终结果。如果把选择条件改为where fname=’li’ and city=’beijing’,则先得到一个2万行的临时表,再得到同样的结 果。由此可见,选择条件的选取极大的影响着查询语句的计算量,所以,要提高查询的响应速度,可以将较严格的条件写在前面,较弱的条件放在后面。

SQL_where条件的优化的更多相关文章

  1. MySQL--索引条件下推优化

    http://blog.163.com/li_hx/blog/static/1839914132015782821512/ 一 什么是“索引条件下推” “索引条件下推”,称为 Index Condit ...

  2. 8.2.1.5 Engine Condition Pushdown Optimization 引擎条件下推优化

    8.2.1.5 Engine Condition Pushdown Optimization 引擎条件下推优化 这种优化改善了直接比较在一个非索引列和一个常量比较的效率. 在这种情况下, 条件是 下推 ...

  3. HCNP Routing&Switching之BGP邻居建立条件、优化和认证

    前文我们了解了BGP相关概念.AS相关概念以及BGP邻居类型.基础配置等,相关回顾请参考https://www.cnblogs.com/qiuhom-1874/p/15370838.html:今天我们 ...

  4. 【mysql优化 2】索引条件下推优化

    原文地址:Index Condition Pushdown Optimization 索引条件下推(ICP:index condition pushdown)是mysql中一个常用的优化,尤其是当my ...

  5. MySQL中关于OR条件的优化

    转载 MySQL在 5.0版本中引入新特性:索引合并优化(Index merge optimization),当查询中单张表可以使用多个索引时,同时扫描多个索引并将扫描结果进行合并. 该特新主要应用于 ...

  6. JavaScrip条件表达式优化

    目录 1,前言 2,多条件if语句优化 3,参数默认值 4,Switch语句优化 1,前言 今早看了一篇文章<JavaScrip实现:如何写出漂亮的条件表达式>,原创于:华为云开发者社区, ...

  7. 【mybatis】mybatis中避免where空条件后面添加1=1垃圾条件的 优化方法

    在mybatis中拼接查询语句,偶尔会出现where后面可能一个字段的值都没有,就导致所有条件无效,导致where没有存在的意义:但也有可能这些条件会存在.那解决这个问题的方法,最常见的就是: 在wh ...

  8. JS条件语句优化

    1.对多个条件使用Array.includes eg: function test(fruit){                                                    ...

  9. 反连接NOT EXISTS子查询中有or 谓词连接条件SQL优化一例

    背景 今天在日常数据库检查中,发现一SQL运行时间特别长,于是抓取出来,进行优化. 优化前: 耗时:503s 返回:0 SQL代码 SELECT * FROM MM_PAYABLEMONEY_TD P ...

随机推荐

  1. zabbix 布署实践【5 使用邮箱SMTP SSL推送告警邮件】

    由于传统的邮件推送脚本使用smtp 25端口,在各大邮箱提供商已不适用,已经向SSL过渡,这里以QQ邮箱为例,使用SSL 465端口 登录zabbix-server 进入 cd /usr/lib/za ...

  2. AsyncHttpClient 中的重定向和 setEnableRedirects 方法异常解决

    今天使用 AsyncHttpClient  开源库,遇到个很崩溃的问题: 方法  setEnableRedirects(false); 从名称上看应该是重定向开关的方法,设置为 false 后则普通请 ...

  3. 51nod1092(lcs简单运用/dp)

    题目链接:https://www.51nod.com/onlineJudge/questionCode.html#!problemId=1092 题意:中文题诶- 思路: 解法1:最坏的情况就是在原字 ...

  4. SQL 默认数据库被误删

    我今天也遇到了,自己解决了.这是我总结的:(不管这帖子沉到哪里了) 删除了SQL服务器默认数据库,无法连接服务器,用户[]登录失败. 1,使用管理员账户修改此用户的默认数据库.    企业管理器,展开 ...

  5. layer ifram 弹出框

    父层 <div class="col-xs-4 text-left" style="padding-left: 50px;"><button ...

  6. 在Eclipse中用TODO标签管理任务(Task)

    Elipse为Java项目的时候,有一个很人性化的“任务管理”功能,利用这个功能可以方便地将项目中一些需要处理的任务记录下来.先来看看“任务管理”是怎么使用的吧.下面这个类在Class和name 属性 ...

  7. 为什么Intent传递对象的时候必须要将对象序列化呢?

    Intent可以算是四大组件之间的胶水,比如在Activity1与Activity2之间传递对象的时候,必须要将对象序列化, 可是为什么要将对象序列化呢? Intent在启动其他组件时,会离开当前应用 ...

  8. extjs 6.2 helloworld

    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/ ...

  9. 【类不类二】Python的类变量与实例变量

    在研究类的时候,难免会有很多疑问,C论坛和博客园高手如云(不知道是不是也美女如云), 搜到了这篇博文,是介绍Python的类变量和实例变量的 ! 刚好在下对self.***这种形式的实例变 量不是很理 ...

  10. sudo密码错误的解决办法

    按一下Caps Lock键,如果大写灯亮了,再按一下. 然后重新输入sudo密码,尝试.