sql 查询优化小计

    好久没更博了,偷偷的抽时间写一下。

    早上开始working的时候,发现一个页面加载很慢,经排查是昨天写的一条联合查询的sql导致的。于是着手优化!

    首先想到的是在join的时候,减少表体积之后再进行关联,于是有了下面这种写法:

     (原sql)  a join b on a.bid=b.id  =>  (新sql) a join (select id,phone from b where b.site=35) b on a.bid=b.id  

    上面是将b表进行where过滤以后再与a表进行关联,执行以后查询相对快了一点,毕竟b表体积小了,关联的时候自然就快了一点。但是,瞅着这句sql就是不太顺眼,毕竟用了子查询,虽然方便,但是感觉还是有损效率的。这个时候,就突然想起以前看到的一个博主写到的,“在使用join以后,可以在on或者where后面加上条件,sql在解析的时候,会先读取条件,再进行关联”,想到这里,就恍然大悟了,何必用子查询?直接后面在where里写条件就好了。

    另外一个方面,查询的时候,一般的会有多个表进行关联, 遵循上面的原理,我们一般把小表放后面,查完了小表再去关联大表。

    

      这里我是用的sql server ,查询的时候有个分析工具挺好用的:

    

    就这个,显示估计的执行计划,可以在这里查看sql的执行消耗。

 

    嗯,谈不上什么技术点,就是记录一下。

    

 

转载于:https://www.cnblogs.com/sunshine-wy/p/8880438.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/414220.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

微信支付宝扫一扫进入小程序的相关配置

需求: 微信小程序和支付宝小程序,用微信和支付宝扫同一个普通二维码,支付宝扫码进入支付宝小程序指定页面,微信扫码进入微信小程序的指定页面。解决办法: 微信公众平台和支付宝开放平台都有自己的二维码配置规则。配置相同的规则,然后用配置的二维码地址加上参数,用草料…

工作279:控制退回的逻辑修改

this.$confirm(你正在进行退回操作, 提示, {confirmButtonText: 确定,cancelButtonText: 取消,type: warning}).then(() > {putAction(/task/ id /status, {status: -1}).then(res > {this.$message({message: 已被退回,type: success});this.list()})}).catch(() >…

重温Elasticsearch

什么是 Elasticsearch ? Elasticsearch (ES) 是一个基于 Lucene 构建的开源、分布式、RESTful 接口全文搜索引擎。还是一个分布式文档数据库,其中每个字段均是被索引的数据且可被搜索,它能够扩展至数以百计的服务器存储以及处理PB级的数据。它…

unity之中级工程师

主要是实际操作。 Destroy(游戏对象):会真正销毁游戏对象。 动态链接库 热更新:用户不需要更新整个项目,只需要更新需要更新的部分,使用AssetBundle。PC,Android可以使用逻辑热更新,将脚本利用反射打包成一个动态链接库…

芝麻信用综合评估未通过,请选择商户支持的其他方式使用服务

如题:公司小程序发布上线的时候报这个错,因为在测试接口的时候都是可用的,发布上线之后不行了,官方的案例及解决方案地址是:点击链接 给出的大致原因如下: 因为在测试接口时能正常使用,所以排除…

elasticsearch集群搭建-windows

1、下载elasticsearch到本地并解压 下载地址: https://www.elastic.co/cn/downloads/elasticsearch 解压之后复制两份,node1当作主节点,node2、node3当作从节点 2、修改主节点配置文件 而我们只需要修改 /config 目录下的 elasticsearch.yml …

vue如何新建一个项目(超详细哦--转)

原文链接 vue创建项目(npm安装→初始化项目) 第一步npm安装 首先:先从nodejs.org中下载nodejs 双击安装,在安装界面一直Next 直到Finish完成安装。 打开控制命令行程序(CMD),检查是否正常 使用淘宝NPM …

工作281:时间戳转换问题

js 时间转换毫秒的四种方法(转) weixin_30730053 2018-08-14 11:45:00 2846 收藏 文章标签: 前端 java 数据库 版权将时间转换为毫秒数的方法有四个:Date.parse() Date.UTC valueOf() getTime() 1. Date.parse():该方法接受一个表…

传统ELK分布式日志收集的缺点?

传统ELK图示: 单纯使用ElK实现分布式日志收集缺点? 1、logstash太多了,扩展不好。 如上图这种形式就是一个 tomcat 对应一个 logstash,新增一个节点就得同样的拥有 logstash,可以说很浪费了。 2、读取IO文件&#xff0…

css样式引入方式,及常用设置标签样式

一. 三种样式引入方式 1. 内联式-直接写在div标签中,不推荐用<div style"color:red;font-size:20px;font-family:Microsoft Yahei;line-height:30;"> 你好&#xff0c;我叫韩妹妹<br\> 你叫什么名字 </div>2. 内嵌式&#xff0c;一般用在首页&…

微信支付分开发流程

公司要用支付分信用免押功能&#xff0c;于是着手开发。 首先要与微信的技术人员对接&#xff0c;申请支付分功能&#xff0c;申请成功之后&#xff0c;会给商户发送服务ID&#xff1b;等1到3个工作日内自行登录商户平台查看是否有开通成功&#xff0c;如果3个工作日依旧没有支…

运行银联支付系统demo

1、Demo下载 下载地址&#xff1a;https://open.unionpay.com/tjweb/acproduct/list?apiservId448 2、导入项目 注意&#xff1a;非maven项目&#xff0c;在导入idea、或者eclipse时请留意导入方式 3、修改配置 acp_sdk.properties 将backUrl、frontUrl修改为外网可访问的路径…

结对编程收获

结对编程收获 ——我和我的伙伴分到了Core组&#xff0c;他负责生成编写四则运算表达式函数&#xff0c;而我负责编写计算函数以及整体框架和接口 这一次结对编程不仅学到了不少编程技术&#xff0c;更在交流合作中发现了自己以往的问题&#xff0c;因为我一直以来是一个偏爱独…

工作283:从字典表获取数值

order_task() {getAction(/dict, {page: 1,limit: 10,query: {"keywords":"order_status"}}).then(res > {this.status res.data.items;console.log(1)console.log(this.status)})},

微信新的用户信息接口wx.getUserProfile,返回信息解密失败

**关于微信小程序新登录接口wx.getUserProfile的使用方法 和手机号码有几率解密失败的解决办法** 自从2021年4月15号微信发布了小程序登录、用户信息相关接口调整说明之后&#xff0c;4.15之后上线的产品需更改用户登录逻辑&#xff0c;这是比较操*的&#xff0c;尤其是产品逻辑…

Springboot整合ActiveMQ发送邮件

虽然ActiveMQ以被其他MQ所替代&#xff0c;但仍有学习的意义&#xff0c;本文采用邮件发送的例子展示ActiveMQ 文章目录1. 生产者1.1 引入maven依赖1.2 application.yml配置1.3 创建配置类ConfigQueue1.4 创建生产者类Producer1.5 启动类AppProducer2. 消费者2.1 引入maven依赖…

工作284:理解绑定逻辑

<custom-table v-loading"loading"element-loading-text"拼命加载中"element-loading-spinner"el-icon-loading" element-loading-background"rgba(0, 0, 0, 0.8)" size-changes"list" pagination-change"list&…

PHPStudy集成环境下使用laravel框架报错ERR_CONNECTION_REFUSED

环境&#xff1a;php7.2mysqlapachelaravel5.5 因为要搞个新项目&#xff0c;用了laravel&#xff0c;不是很熟悉这个框架&#xff0c;还用了laravel-admin后台系统&#xff0c;配置本地虚拟域名的时候&#xff0c;映射始终报错&#xff0c;能访问到项目跟目录&#xff0c;但是…

MQTT客户端库-Paho GO

为了加深理解&#xff0c;本文是翻译文章。原文地址 Paho GO Client   语言  GO协议EPL AND EDL官网地址http://www.eclipse.org/paho/API类型Asynchronous 描述 回到2013年10月&#xff0c;我转到了关于其他Paho MQTT客户端库的编写&#xff0c;并选择了作为一种新的语言去…

RabbitMQ简单介绍+Windows环境安装

文章目录 文章目录文章目录1、RabbitMQ简介2、RabbitMQ与其他MQ有什么不同3、RabbitMQ环境安装3.1 安装erlang3.2 安装rabbitmq-server4. RabbitMQ管理平台介绍1、RabbitMQ简介 RabbitMQ 是一个由 erlang 开发的 AMQP&#xff08;Advanced Message Queue &#xff09;的开源实…