sql
zl1zl2zl3
这个作者很懒,什么都没留下…
展开
-
耗时 3 天,上亿数据如何做到秒级查询?
最近在忙着优化集团公司的一个报表。优化完成后,报表查询速度由从半小时以上(甚至查不出)到秒查的质变。从修改 SQL 查询语句逻辑到决定创建存储过程实现,花了我 3 天多的时间,在此总结一下,希望对朋友们有帮助。数据背景首先项目是西门子中国在我司实施部署的 MES 项目,由于项目是在产线上运作(3 years+),数据累积很大。在项目的数据库中,大概上亿条数据的表有 5 个以上,千万级数据的表 10 个以上,百万级数据的表,很多…(历史问题,当初实施无人监管,无人监控数据库这块的性能问题。.转载 2020-08-19 14:27:32 · 516 阅读 · 0 评论 -
你还在认为 count(1) 比 count(*) 效率高?
1. count(1) and count(*)当表的数据量大些时,对表作分析之后,使用count(1)还要比使用count(*)用时多了!从执行计划来看,count(1)和count()的效果是一样的。但是在表做过分析之后,count(1)会比count()的用时少些(1w以内数据量),不过差不了多少。如果count(1)是聚索引,id,那肯定是count(1)快。但是差的很小的。因为count(),自动会优化指定到那一个字段。所以没必要去count(1),用count(),sql会帮你完转载 2020-08-18 15:37:27 · 143 阅读 · 0 评论 -
这次被问懵了!搞定了这些SQL优化技巧,下次横着走
SQL 优化已经成为衡量程序猿优秀与否的硬性指标,甚至在各大厂招聘岗位职能上都有明码标注,如果是你,在这个问题上能吊打面试官还是会被吊打呢?有朋友疑问到,SQL 优化真的有这么重要么?如下图所示,SQL 优化在提升系统性能中是:成本最低和优化效果最明显的途径。如果你的团队在 SQL 优化这方面搞得很优秀,对你们整个大型系统可用性方面无疑是一个质的跨越,真的能让你们老板省下不止几沓子钱。优化成本:硬件>系统配置>数据库表结构>SQL 及索引。优化效果:硬件<系统配置转载 2020-08-15 11:23:59 · 424 阅读 · 0 评论 -
因用了Insert into select语句,美女同事被开除了!
前言Insert into select请慎用。这天xxx接到一个需求,需要将表A的数据迁移到表B中去做一个备份。本想通过程序先查询查出来然后批量插入。但xxx觉得这样有点慢,需要耗费大量的网络I/O,决定采取别的方法进行实现。通过在Baidu的海洋里遨游,他发现了可以使用insert into select实现,这样就可以避免使用网络I/O,直接使用SQL依靠数据库I/O完成,这样简直不要太棒了。然后他就被开除了。事故发生的经过。由于数据数据库中order_today数据量过大,当时好像有70转载 2020-08-05 09:35:47 · 237 阅读 · 0 评论 -
神奇的 SQL,Group By 真扎心,原来是这样!
作者:青石路cnblogs.com/youzhibing/p/11516154.htmlGROUP BY 后 SELECT 列的限制标准 SQL 规定,在对表进行聚合查询的时候,只能在 SELECT 子句中写下面 3 种内容:通过 GROUP BY 子句指定的聚合键、聚合函数(SUM 、AVG 等)、常量。我们来看个例子:我们有 学生班级表(tbl_student_class) 以及 数据如下 :DROPTABLEIFEXISTStbl_student_class;CRE...转载 2020-07-19 20:24:14 · 184 阅读 · 0 评论 -
深度 | 一条查询SQL的前世今生 —— ClickHouse 源码阅读
作者:逍凯,阿里云数据库实习开发工程师注:以下分析基于开源 v19.15.2.2-stable 版本进行,社区最新版本代码改动较大,但是总体思路是不变的。01用户提交一条查询SQL背后发生了什么在传统关系型数据库中,SQL处理器的组件主要包括以下几种:• Query Parsing负责进行词法和语法分析,把程序从人类高可读的格式(即SQL)转化成机器高可读的格式(AST,抽象语法树)。词法分析指的是把SQL中的字符序列分解成一个个独立的词法单元——Token(<类型,值&..转载 2020-07-11 21:35:01 · 625 阅读 · 0 评论 -
我去,为什么最左前缀原则失效了?
问题最近,在 mysql 测试最左前缀原则,发现了匪夷所思的事情。根据最左前缀原则,本来应该索引失效,走全表扫描的,但是,却发现可以正常走索引。表结构如下( Mysql 版本 5.7.22):CREATETABLE`user`(`id`int(11)NOTNULLAUTO_INCREMENT,`name`varchar(32)COLLATEutf8mb4_binDEFAULTNULL,`age`int(11)DEFAULTNULL,`add...转载 2020-07-06 13:42:38 · 502 阅读 · 1 评论 -
为什么大家都说 SELECT * 效率低?
版权声明:本文为CSDN博主「_陈哈哈」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。原文链接:https://blog.csdn.net/qq_39390545/article/details/106766965面试官:“小陈,说一下你常用的SQL优化方式吧。”陈小哈:“那很多啊,比如不要用SELECT *,查询效率低。巴拉巴拉...”面试官:“为什么不要用SELECT *?它在哪些情况下效率低呢?”陈小哈:“SELECT * 它好像比写指定列名多一次全.转载 2020-07-01 16:38:31 · 251 阅读 · 0 评论 -
explain都不懂,还好意思说会SQL调优?
作者 |Mr林_月生来源 |https://urlify.cn/rUVBJvmysql中的explain命令可以用来查看sql语句是否使用了索引,用了什么索引,有没有做全表扫描。可以帮助我们优化查询语句。explain出来的信息有10列,文章主要介绍type、key、Extra这几个字段。演示中涉及到的表结构如下:CREATETABLE`dept_desc`(`dept_no`char(4)NOTNULL,`dept_name`varchar(40)...转载 2020-06-17 15:14:39 · 312 阅读 · 0 评论 -
为什么 SQL 语句不要过多的 join?
作者:柯三链接:juejin.im/post/5e0443ae6fb9a0162277a2c3送分题面试官:有操作过Linux吗?我:有的呀面试官:我想查看内存的使用情况该用什么命令我:free或者top面试官:那你说一下用free命令都可以看到啥信息我:那,如下图所示 可以看到内存以及缓存的使用情况 total 总内存 used 已用内存 free 空闲内存 buff/cache 已使用的缓存 avaiable 可用内存...转载 2020-06-10 11:33:15 · 578 阅读 · 0 评论 -
SQL 进阶技巧(下)
上文我们简述了 SQL 的一些进阶技巧,一些朋友觉得不过瘾,我们继续来下篇,再送你 10 个技巧一、 使用延迟查询优化 limit [offset], [rows]经常出现类似以下的 SQL 语句:SELECT*FROMfilmLIMIT100000,10offset 特别大!这是我司出现很多慢 SQL 的主要原因之一,尤其是在跑任务需要分页执行时,经常跑着跑着 offset 就跑到几十万了,导致任务越跑越慢。LIMIT 能很好地解决分页问题,但如果 offset 过...转载 2020-05-28 14:57:54 · 236 阅读 · 0 评论 -
SQL 进阶技巧(上)
由于工作需要,最近做了很多 BI 取数的工作,需要用到一些比较高级的 SQL 技巧,总结了一下工作中用到的一些比较骚的进阶技巧,特此记录一下,以方便自己查阅,主要目录如下: SQL 的书写规范 SQL 的一些进阶使用技巧 SQL 的优化方法 SQL 的书写规范在介绍一些技巧之前,有必要强调一下规范,这一点我发现工作中经常被人忽略,其实遵循好的规范可读性会好很多,应该遵循哪些规范呢1、 表名要有意义,且标准 SQL 中规定表名的第一个字符应该是字母。2、注释,有单行注转载 2020-05-28 10:39:58 · 312 阅读 · 0 评论 -
一次 SQL 查询优化原理分析(900W+ 数据,从 17s 到 300ms)
有一张财务流水表,未分库分表,目前的数据量为9555695,分页查询使用到了limit,优化之前的查询耗时16 s 938 ms(execution: 16 s 831 ms, fetching: 107 ms),按照下文的方式调整SQL后,耗时347 ms(execution: 163 ms, fetching: 184 ms);操作:查询条件放到子查询中,子查询只查主键ID,然后使...转载 2020-04-05 13:07:39 · 245 阅读 · 0 评论 -
8 种最坑的 SQL 错误用法,你有没有踩过坑?
01、LIMIT语句分页查询是最常用的场景之一,但也通常也是最容易出问题的地方。比如对于下面简单的语句,一般 DBA 想到的办法是在 type, name, create_time 字段上加组合索引。这样条件排序都能有效的利用到索引,性能迅速提升。好吧,可能90%以上的 DBA 解决该问题就到此为止。但当 LIMIT 子句变成 “LIMIT 1000000,10” 时,程序员仍然会抱怨:我...转载 2020-03-20 16:06:07 · 188 阅读 · 0 评论 -
45岁的 SQL 语言要被淘汰了?
在 SQL 被引入的 45 年中,它经历了许多数据库的诞生和消亡,也经历了许多数据处理方式的诞生和消亡。以下为译文:四十五年前,两位年轻的IBM研究人员在数据库上提出了一种新的语言,这是一种关系型语言,它奉行一切数据可以被声明性地操作和容易操作的思想。自Don Chamberlin和Ramond Boyce出版《SEQUEL:结构化英语查询语言》一书后的几年里,关系模型和SQL已经...转载 2020-03-11 16:36:08 · 490 阅读 · 0 评论 -
SQL 查询语句总是先执行 SELECT?你们都错了
很多 SQL 查询都是以 SELECT 开始的。不过,最近我跟别人解释什么是窗口函数,我在网上搜索”是否可以对窗口函数返回的结果进行过滤“这个问题,得出的结论是”窗口函数必须在 WHERE 和 GROUP BY 之后,所以不能”。于是我又想到了另一个问题:SQL 查询的执行顺序是怎样的?好像这个问题应该很好回答,毕竟自己已经写了上万个 SQL 查询了,有一些还很复杂。但事实是,我仍然很难确切地...转载 2020-01-19 16:36:53 · 221 阅读 · 0 评论 -
SQL 查询语句总是先执行 SELECT?你们都错了
很多 SQL 查询都是以 SELECT 开始的。不过,最近我跟别人解释什么是窗口函数,我在网上搜索”是否可以对窗口函数返回的结果进行过滤“这个问题,得出的结论是”窗口函数必须在 WHERE 和 GROUP BY 之后,所以不能”。于是我又想到了另一个问题:SQL 查询的执行顺序是怎样的?好像这个问题应该很好回答,毕竟自己已经写了上万个 SQL 查询了,有一些还很复杂。但事实是,我仍然很难确切地...转载 2020-01-17 17:28:37 · 204 阅读 · 0 评论 -
写一手好 SQL 很有必要
前言博主负责的项目主要采用阿里云数据库MySQL,最近频繁出现慢SQL告警,执行时间最长的竟然高达5分钟。导出日志后分析,主要原因竟然是没有命中索引和没有分页处理。其实这是非常低级的错误,我不禁后背一凉,团队成员的技术水平亟待提高啊。改造这些SQL的过程中,总结了一些经验分享给大家,如果有错误欢迎批评指正。MySQL性能最大数据量抛开数据量和并发数,谈性能都是耍流氓。MyS...转载 2019-12-13 10:56:24 · 134 阅读 · 0 评论 -
图解 SQL 里的各种 JOIN
从业以来主要在做客户端,用到的数据库都是表结构比较简单的 SQLite,以我那还给老师一大半的 SQL 水平倒也能对付。现在偶尔需要到后台的 SQL Server 里追查一些数据问题,就显得有点捉襟见肘了,特别是各种 JOIN,有时候傻傻分不清楚,于是索性弄明白并做个记录。前言在各种问答社区里谈及 SQL 里的各种 JOIN 之间的区别时,最被广为引用的是 CodeProject 上 ...转载 2019-01-28 10:24:18 · 320 阅读 · 0 评论 -
看漫画就能学SQL,简直太cool了
对于SQl, 很多人学不会的原因是从一开始就没明白,学这东西能干啥,学会了能有什么用。甚至有些人不知道‘SQL’应该怎么读,以至于一开始兴致勃勃,但是学到一半放弃了。注意:‘sql’真的不能读成‘烧烤’、‘惜烤’、’撒扣’、’斯购‘,另外,’MYSQL’真的不能读成’卖烧烤’,’卖西裤‘,有学员问:那我卖什么,我回答说:你去死。如果你真的、实在是、绝对的看不懂英文的音标,那就暂且读’色儿扣...转载 2019-03-15 14:58:08 · 885 阅读 · 0 评论 -
MyBatis动态SQL(认真看看, 以后写SQL就爽多了)
作者:阿进的写字台cnblogs.com/homejim/p/9909657.html温馨提示:文中代码看不全可左右滑动MyBatis 令人喜欢的一大特性就是动态 SQL。 在使用 JDBC 的过程中, 根据条件进行 SQL 的拼接是很麻烦且很容易出错的。 MyBatis 动态 SQL 的出现, 解决了这个麻烦。MyBatis通过 OGNL 来进行动态 SQL 的使用的。目...转载 2019-03-22 09:10:18 · 157 阅读 · 0 评论 -
一次 sql 优化经历,太有趣了!
作者:风过无痕cnblogs.com/tangyanbo/p/4462734.html场景我用的数据库是mysql5.6,下面简单的介绍下场景课程表:createtableCourse( c_idintPRIMARYKEY, namevarchar(10))数据100条学生表:createtableStudent( ...转载 2019-03-23 09:32:08 · 547 阅读 · 0 评论 -
8 种常被忽视的 SQL 错误用法
sql语句的执行顺序:FROM<left_table>ON<join_condition><join_type>JOIN<right_table>WHERE<where_condition>GROUPBY<group_by_list>HAVING<having_co...转载 2019-03-23 14:30:49 · 268 阅读 · 0 评论 -
关于Mybatis,我总结了 10 种通用的写法
出处:https://blog.csdn.net/smile_lg/article/details/71215619用来循环容器的标签forEach,查看例子foreach元素的属性主要有item,index,collection,open,separator,close。 item:集合中元素迭代时的别名, index:集合中元素迭代时的索引 open:常用...转载 2019-04-17 11:30:43 · 248 阅读 · 0 评论 -
为什么说 SQL 是最成功的第四代语言?
作者 | Keshav Murthy译者 | 无明45年前,两名年轻的IBM研究员将一门关系型语言带到了数据库领域,旨在使用声明性的方式来操作数据。从DonChamberlin和RamondBoyce发表“SEQUEL:一门结构化的英语查询语言”以来,关系型模型和SQL已经得到了广泛扩展,并被用在大量的技术中,如OLTP、OLAP、对象数据库、对象关系型数据...转载 2019-04-15 09:32:52 · 507 阅读 · 0 评论 -
一条简单的 SQL 执行超过1000ms,纳尼?
作者:VipAugushttps://juejin.im/post/5ce906a3e51d455a2f2201dcMySQL对我说“Too young, too naive!"大概过程在测试环境Docker容器中,在跨进程调用服务的时候,A应用通过Dubbo调用B应用的RPC接口,发现B应用接口超时错误,接着通过debug和日志,发现具体耗时的地方在于一句简单SQL执行,...转载 2019-07-03 16:28:29 · 301 阅读 · 0 评论 -
为什么SQL正在击败NoSQL,这对未来的数据意味着什么
译者注:经过多年的沉寂之后,今天的SQL正在复出。缘由如何? 这对数据社区有什么影响?看看本文的分析。以下为译文。自从可以利用计算机做事以来,我们一直在收集的数据以指数级的速度在增长,因此对于数据存储、处理和分析技术的要求也越来越高。在过去的十年里,由于SQL无法满足这些要求,软件开发人员就抛弃了它,NoSQL也就因此而渐渐发展起来:MapReduce,Bigtable,Cassandra...转载 2018-11-03 00:09:30 · 266 阅读 · 0 评论