查询语句是我们在开发中经常使用到的,可以说一个好的查询语句直接影响到网站的运行速度,这一点也不夸张。在今天,我更清楚的了解这个事实。
一个简单的实例,足以说明这一切。
1) A表有500,000条,B表有1,000条数据,
2) A、B表都有FirstName,LastName两个字段,但其中这两个并不是完全匹配的,例如B表的FirstName有‘J.’的形式,认为是名字简写形式,会匹配A表以J开头的FirstName(James)
3) 要求找出B表匹配A表名字的数据。
分析:
1) A表有500,000条数据,说明A表是一个大数据表,对于数据超过300条的首先我们应该想到需要建立索引,对于A表这样的大数据表更是如此,并且A表和B表是通过firstname和lastname进行匹配的,因此我们这里可以通过建立firstname和lastname的索引。
2) B表的FirstName为J.的形式,因此我们这里要多考虑名字简写的形式,对于J.的形式,我们找出来然后再根据like来进行匹配。
根据分析,我们很容易写出:
select *
from A,B where
A.LastName=B.LastName
and ((INSTR(B.firstName,'.')>0 and
A.FirstName like CONCAT(SUBSTRING_INDEX(B.firstName,'.',1),'%'))
or (A.FirstName=B.FirstName));
语句没有问题,在Mysql 执行,结果耗时300多秒,好家伙,我还以为就死在那里了,再来分析这个语句,耗时这么长有可能就是因为在语句里面or的原因,根据这个推测,重新改写:
select *
from A,B where
A.LastName=B.LastName
and INSTR(B.firstName,'.')>0 and
A.FirstName like CONCAT(SUBSTRING_INDEX(B.firstName,'.',1),'%')
union all
select *
from A,B where
A.LastName=B.LastName
and A.FirstName=B.FirstName;
再次查询,结果令人惊叹,耗时20几秒,没想到一个or居然会有这么大的差异。后来请教了下项目主管,才知道带有or,in,exists, not in, not exists 的sql语句都不是很好的设计。看来要将查询语句写好,尤其是这种大的数据表,效率表现的尤为突出,这是我们在平时开发中很容易遗忘的一点。
值得一提的是,有时候对于这种有大数据表的,可以新建一个临时表专门用来存储大数据表中的经常会用到的数据或者和其他表关联的数据,这样,可以把和大数据表的连接转换为和这个临时表的连接,极大的减轻对服务器的压力。
分享到:
相关推荐
SQL优化 SQL优化软件 SQL优化工具 很好用的工具,可以分析优化TSQL语句,oracle数据库语句优化工具
跟着乐于分享的数据库大师梁敬彬抓住表象背后的SQL本质 有人就有江湖,有江湖就有IT系统,有IT系统就有数据库,有数据库就有SQL,SQL..., 随后《收获,不止SQL优化——抓住SQL的本质》指引大家学会等价改写、过程包
第2章 风驰电掣——有效缩短SQL优化过程 24 2.1 SQL调优时间都去哪儿了 25 2.1.1 不善于批处理频频忙交互 25 2.1.2 无法抓住主要矛盾瞎折腾 25 2.1.3 未能明确需求目标白费劲 26 2.1.4 没有分析操作难度乱调优...
1. SQL优化 1 1.1. 优化实战 1 1.1.1. 策略1.尽量全值匹配 1 1.1.2. 策略2.最佳左前缀法则 2 1.1.3. 策略3.不在索引列上做任何操作 2 1.1.4. 策略4.范围条件放最后 3 1.1.5. 策略5.覆盖索引尽量用 3 1.1.6. 策略6.不...
sql优化
本书是作者十年磨一剑的成果之一,深入分析与解剖oracle sql优化与调优技术,主要内容包括: 第一篇“执行计划”详细介绍各种执行计划的含义与操作,为后面的深入分析打下基础。重点讲解执行计划在sql语句执行的...
sql优化的几种方法sql优化的几种方法sql优化的几种方法sql优化的几种方法sql优化的几种方法
基于Oracle的SQL优化
深入揭示OracleSQL优化与调优的原理、核心技术与思想方法 盖国强鼎力推荐! Oracle数据库的性能优化直接关系到系统的运行效率,而影响数据库性能的一个重要因素就是SQL性能问题。本书是作者十年磨一剑的成果之一...
SQL Server SQL优化
基于Oracle的SQL优化
sql优化sql优化sql优化sql优化
本书是作者十年磨一剑的成果之一,深入分析与解剖Oracle SQL优化与调优技术,主要内容包括: 第一篇“执行计划”详细介绍各种执行计划的含义与操作,为后面的深入分析打下基础。重点讲解执行计划在SQL语句执行的生命...
Oracle_SQL优化脚本_完整实用资源,请下载 。
《基于Oracle的SQL优化》PDF版本下载
, 现在《收获,不止SQL优化——抓住SQL的本质》开始带你抛除烦恼,走进优化的可乐世界!, 首先教你SQL整体优化、快速优化实施、如何读懂执行计划、如何左右执行计划这四大必杀招。整这些干嘛呢?答案是,传授一个先...
崔华的《基于Oracle的SQL优化》一书配套脚本,纯手打
《基于Oracle的SQL优化》是本土Oracle数据库性能优化大师泣血力作,集十数年实战修行与潜心钻研之大成;盖国强等国内数据库一线名家联合推荐;囊括数据库性能优化技术所有分支与脉络,讲解通俗,实例经典。