sql
valage
本人公众号“论PM如何成长”,但公众号修改次数有限,csdn文章会不断修改补充,公众号可以联系我
展开
-
记一次sql查询效率问题,待分析
问题:sql语句在外面包了一层select * 之后,整个的查询效率变得很低,explain之后发现id=1的记录变成了一个rows=393085629972的记录,不知道从哪里来的。分析:462861*724*1173刚好等于393085629972,在select * 的下一层B确实有两个left join ,可能就是这个导致的。解决:我没办法分析出更细层的原因,为什么select * 一个left join 的子查询后会有笛卡尔积出现。之前一直以为就是拿着子查询的结果直接出来就行了,没有想到.原创 2020-12-29 16:07:02 · 272 阅读 · 0 评论 -
记一次数据仓库从0到1的实战
去年进公司的时候,仓库是基于清单数据,用的是clickhouse数据库,并没有进行分层。所有的报表都是基于清单数据的查询,所有的报表sql都非常的复杂。1.原有的仓库其实不能说它是仓库,只能是一个数据库,基本上就是利用contrab进行任务调度,每个任务之间隔开一点时间,如果有依赖的话。出现的问题:由于用户表以及一些事件表经常需要进行清洗,采用的是从一张表到etl完之后再导到原来的表,...原创 2020-04-01 16:01:59 · 2003 阅读 · 3 评论 -
sql数据量大的排序问题
刚好面试提到这个问题,深感自己基础薄弱。问题:sql数据量大,内存无法满足,如何进行排序?网上搜不到具体的答案,也不知道总结的对不对。很多帖子都提到一个外部排序,采用多路归并算法。外部排序是指将数据存储在外部磁盘而不是内存中,内存中的排序是内排序。多路归并算法,简单来说就是将要排序的文件拆分成一个个小文件,然后对针对每个小文件排序,排玩序的小文件组成顺串,在针对一个一个顺串排序载入内存...原创 2018-08-01 18:49:23 · 2939 阅读 · 0 评论 -
sqlserver 中ETL常见技巧整理
时间戳并不是一个date类型的字段,而是一个二进制的,数据库自动生成的字段,记录了在数据库里的时间。可以用来作为增量更新的条件,同时也可以发现查询完数据后再查一次,数据在这段时间有没有发生改变https://www.cnblogs.com/tianguook/p/3830234.html@@Rowcount 是指做完crud的表,影响的行数,set @ValidRecordCount ...原创 2018-09-25 18:06:46 · 2441 阅读 · 0 评论 -
使用sqlserver management studio 对表增量导入数据
1 打开studio的工具,选中数据库——任务 ,选择导入还是导出2.写完地址用户密码后,下图位置选择第二个,写sql来读取数据3.写好sql,注意:如果你的目标表有自增的主键的话,该字段不能写到sql语句中,不然会报错4.在这一步,注意要选择你所需要的表5,.剩下的一步一步next就行了...原创 2018-10-24 10:42:51 · 3271 阅读 · 0 评论 -
sql技巧篇
数据库针对sqlserver,其他数据库可能会有点变化 1.sqlserver 逐行累加CREATE TABLE [dbo].[User]( [Id] [int] IDENTITY(1,1) NOT NULL, [Name] [nvarchar](20) NULL, [Score] [int] NULL)-- 逐行累加SELECT t2.A, SUM(...原创 2018-12-13 09:43:31 · 217 阅读 · 0 评论 -
sqlserver查询突然变得很慢
今天早上上班发现应该在周末执行完的脚本执行到了现在,靠着自建的etl日志表发现某个大表的查询 修改速度特别慢 。后来重新启动了数据库(在控制面板的服务里面重新启动sqlserver),就好了。猜测原因:可能是因为系统的临时数据库tempdb满了,或者是被阻塞之类的,在活动件事器里面看到我的那个进程一直在报RESOURCE_SEMAPHORE 等待状态 ,阻塞他的进程是tempdb数据库的,...原创 2019-03-04 19:01:25 · 20511 阅读 · 1 评论