mysql and 和where,关于mysql:连接sql查询中where和and子句的区别

本问题已经有最佳答案,请猛点这里访问。

下面两个SQL查询有什么区别

根据以下两个测试结果

速度更快(237比460)。据我所知,这是一个标准。

1e8d7c173d1ebacdccc6f2ce22d7cbda.png

氧化镁

不,有细微的差别,你不能说没有差别

除了语法之外没有别的区别。

虽然只有一个简短的句子,但这仍然是一个有效的答案。

以及一个非常精确、准确和相关的答案。

它只是对on条件进行过滤,而不是添加一个where过滤器。所做的没有区别,只是没有一个地方比较慢。他的回答完全足够了

以这种方式考虑,在联接时,表中的行与其他表中的行在两个条件下(经过它两次)进行比较…而不是在连接后进行一次,然后查找非空结果。这就是为什么它更快

这不是一个正确的答案(尽管这是常见的误解)。通常,这两个命令之间没有明显的区别,因为查询优化器将重写查询以使用更好的语法。但是,这两个查询的运行顺序有着根本的区别。FROM子句在WHERE之前进行评估,并在更复杂的查询中给出截然不同的执行计划。要验证,请使用提示忽略优化器的更改,并使用解释计划查看执行路径的差异。

这很有趣-谢谢你指出这一点。如果我错了,请纠正我,只是再次回顾查询,我认为即使是结果也会与上述两个查询完全不同。查询1不会返回a.name为空的记录。查询2将返回a.name为空的记录,因为表a位于联接的左侧。如果我们从表B中选择一列,我们会看到结果显示为空,即使我们在ID上匹配。

执行联接,然后执行筛选器

在联接前执行筛选器(更好的性能)

编辑:上面是我的原始答案,下面支持它。

4个表,4个左联接,大约500000个结果,第二个查询在一半时间内运行。在测试查询效率时,您应该选择更大的工作集…或是CPU负载、RAM使用、连接时间等因素。如果您的记录少于1000条,或者流量优化有限,则很难看到或证明这一点。在生产环境中测试您的工作集并使用性能更好的东西(不仅仅是理论上的)很简单。

网址:http://www.beaudurant.com/images/sof/22302649.jpg

您可以看到我的数据集在效率和结果上的差异。此示例使用的是MySQL数据库。

452734记录420.016秒

452747记录在214.334秒内

注意:查询是故意运行缓慢的。

我可以在4+表(内部)联接上发布10000000条记录的示例…在我的例子中,添加和到每个联接会更快,然后等待直到最后以一个where结束。快30秒以上…

表达式的语法外观与实际用于计算结果的策略无关。从未听说过"查询优化器"这个词?

你们中有人愿意看我的结果吗?您使用大型数据集吗?

欧文-你错了……句法外观与查询策略有关。优化器只知道如何编写比您更好的查询(基于对数据和元数据的复杂分析),因此更改执行计划以编写您的意思而不是编写的内容。这就是执行计划随着表中数据的变化而随时间变化的原因。但是,编写查询的顺序会影响优化器的编译。

欧文-是女士吗?我主要使用MySQL、Berkeley、SQLite和MSSQL。这个例子是mysql,尽管我可以在mssql上显示相同的结果(不同的表和数据)。我喜欢做事情,而不是让微软为我做决定。

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

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

相关文章

matlab里输出恒压的逆变器,基于IGBT逆变器的异步电机变频调速系统的MATLAB仿真...

异步电机变频调速系统电路仿真模型如图(4)所示。直流电压不621V,逆变器为IGBT 的三相半桥逆变器,电机为异步电机模块,其主电路由直流电压源、逆变器和电机依次相连。图(4)变频调速系统控制部分,利用“Step”模块设定频率指令f1*&a…

php 获取京东交易账号,PHP爬虫爬取京东列表

这里使用到了一个php插件下面是源码simple_html_dom.phpdefined(IN_ECS);define(HDOM_TYPE_ELEMENT, 1);define(HDOM_TYPE_COMMENT, 2);define(HDOM_TYPE_TEXT, 3);define(HDOM_TYPE_ENDTAG, 4);define(HDOM_TYPE_ROOT, 5);define(HDOM_TYPE_UNKNOWN, 6);define(HDOM_QUOTE_DOU…

星模php格,extend/base/TencentSms.php · 纵之格/ShopXO - Gitee.com

// ----------------------------------------------------------------------// | ShopXO 国内领先企业级B2C免费开源电商系统// ----------------------------------------------------------------------// | Copyright (c) 2011~2019 http://shopxo.net All rights reserve…

matlab中云模型,云模型简介与个人理解matlab程序.doc

.........................专业资料分享随着不确定性研究的深入,越来越多的科学家相信,不确定性是这个世界的魅力所在,只有不确定性本身才是确定的。在众多的不确定性中, HYPERLINK "/view/606111.htm" \t "_blank…

php dns刷新,Windows DNS缓存自动刷新

Windows DNS缓存自动刷新admin • 2018 年 09 月 04 日DNS(域名服务器)DNS(Domain Name Server)是进行域名和与之相对应的ip地址转换的服务器。DNS中保存了一张域名和与之相应的ip地址的表,以解析消息的域名。DNS轮训在统一主机添加多条A记录,这就是DNS轮…

php日期相减函数,倒计时函数_计算两个时间相差值_PHP函数

**PHP倒计时函数、求两个日期时间之间相差的时间函数、计算时差函数_PHP函数笔记**php/*** 求两个日期时间之间相差的时间* (针对1970年1月1日之后,求之前可以采用泰勒公式)* param string $day1 2016-10-01 10:01:08* param string $day2 2020-10-01 10:01:08* ret…

jq上传file到php,jQuery文件上传

插件描述:这是一个文件上传的展示,看很多插件,并不满意就自己写了一个,可能兼容性不是很好,没有准确进行测试过,还请各位不吝赐教更新时间:2019/3/25 下午8:53:17更新说明:修复上传成…

oracle导出建表主键,oracle主键自动生成 配合hibernate的生成策略详解

hibernate配合oracle自动生成主键策略有两种方法:A)设置ID的增长策略是sequence,同时指定sequence的名字,最好每个表建一个sequence,此种做法就如同MS-SQL,MY-SQL中的自动增长一样,不需要创建触发器,具体的…

oracle找到表的位置,查看Oracle表中的指定记录在数据文件中的位置

查看Oracle表中的指定记录位置select rowid,user_id from sshr.xx_user where user_id3010586select rowid,dbms_rowid.rowid_object(rowid) object_id,dbms_rowid.rowid_relative_fno(rowid) file_id,dbms_rowid.rowid_block_number(rowid) block_id,dbms_rowid.rowid_row_num…

oracle异常抛出,ORACLE 存储过程异常捕获并抛出

for tab_name in tables loopexecute immediate drop table ||tab_name; --此处可能会报错end loop;当前情况是,循环表,进行删除,如果出现表不存在,则会异常中断,导致整个存储过程挂掉,需求是要能跳过错误的…

oracle的主目录怎么删除,删除oracle数据库卸载

oracle 10g在win上卸载软件环境1 、Windows XPOracle 10g2、 Oracle安装路径为 d:\Oracle实现方法1 、开始—设置—控制面板—管理工具—服务停止所有 Oracle服务;Or acleUfiCQiisoXeorcl 名称 I细I好I启动类型I aat为ffetwork Frov-isi. 「, 巴SOrae le StrTice…

oracle数据库相关知识,Oracle数据库相关知识点复习

一.Oracle数据库中常用的数据类型varchar2(长度)可变长字符串char(长度)定长number()表示整数或者浮点数number(8) number(8,2)clog字符的大对象blog二进制的大对象二.数据库查询1)SELECT语句从表中提取查询数据.语法为SELECT [DISTINCT] {column1,column2,…} FROM tablename …

Linux中批量创建空白文件,在Linux中批量创建和修改文件或目录

1. 用一条命令直接创建[fredRoyalmile Auto_Ops]$ touch seq 10[fredRoyalmile Auto_Ops]$ ls1 10 2 3 4 5 6 7 8 9[fredRoyalmile Auto_Ops]$ touch linux-{A..G}[fredRoyalmile Auto_Ops]$ lslinux-A linux-B linux-C linux-D linux-E linux-F linux-G[fredRo…

linux查看cpu占用最多的进程,Linux下查看占用CPU资源最多的几个进程

BPM SharePoint解决方案分享一.需求分析 SharePoint作为微软推出的协同类平台产品,为客户提供了门户.内容.文档.流程.社区.搜索.BI等一系列的解决方案,然而其流程功能由于设计理念差异,不能完全满足客户的需求,主要原因 ...nodejs字符与字节之间的转换new Buffer("Hello W…

linux内核 sin头文件,Linux内核中中断request_irq详解--中断共享问题解决

。函数原型如下:2.4 内核int request_irq (unsignedintirq,void (*handler)(int,void*,structpt_regs*),unsignedlongfrags,constchar*device,void*dev_id);2.6 内核request_irq(unsignedintirq,irq_handler_thandler,unsignedlongflags,constchar*name,void*dev);参…

linux缓存文件用户权限错误,Laravel运行缓存权限问题

Laravel 开发中遇到权限问题 failed to open stream: Permission denied错误现象:messg:"file_put_contents(.../storage/framework/cache/data/03/8c/03xxxxxx):failed to open stream: Permission denied"status: 500经过搜索发现网络上大量的解决方案是…

linux误删表空间文件,UNDO表空间下的数据文件被误删除后的处理方法

UNDO表空间下的数据文件被误删除后的处理方法:操作前备份数据库,以避免更大的损失。思路:1、把误删除的数据文件offline2、正常打开数据库后创建新的UNDO表空间及数据文件3、修改相应参数指向新的UNDO表空间4、重新启动数据库验证5、删除旧的…

linux内核有ebpf吗,聊聊很重要的内核技术eBPF

在2018年的 Linux Plumber 大会上,eBPF成了亮点,有24个议题提到了 eBPF,可以预计eBPF会成为一大技术热点。eBPF(Extended Berkeley Packet Filter) 的核心是驻留在 kernel 的高效虚拟机。最初的目的是高效网络过滤框架,前身是 BPF…

linux 访问日志ip排序,Linux通过日志文件统计IP访问次数排序

假设我的日志文件内容如下:218.92.217.53 - - [22/Nov/2017:17:26:27 0800] "GET /images/rand HTTP/1.0" 200 1785 "https://www.baidu.com/index.shtml" "Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 6.1; WOW64; Trident/7.0; SLCC…

Linux系统自动备份脚本,供参考的Linux系统中自动执行分段备份脚本

供参考的Linux系统中自动执行分段备份脚本发布时间:2014-04-21 15:49:00来源:红联作者:tioced以下脚本仅做学习参考,需加到/etc/crontab文件,每天执行一次的脚本自动执行分段备份/www/users下的网页文件夹。[code]#!/usr/bin/perl$all_day date;chdir &…