sql
张之海
硕士毕业于东北大学,现就职于北京某猫头鹰公司,大数据工程师职位。
展开
-
列式存储和行式存储的真正区别
1 列式存储和行式存储的真正区别参考文献: 列式存储和行式存储的真正区别_过往记忆大数据_公众号文章一般原因:查询需要的字段时,Column-Store 只需读取需要的列,Row-Store读一条记录会把 所有字段都读出来。Column-Stroe在IO上效率更高。块遍历 单记录遍历:读出行,对每行抽取出需要的列,再对这些列调用相应的函数。函数调用的次数与数据的条数为1:11:1...原创 2019-05-04 11:07:42 · 2053 阅读 · 0 评论 -
leetcode 184. 部门工资最高的员工
1 题目描述Employee 表包含所有员工信息,每个员工有其对应的 Id, salary 和 department Id。±—±------±-------±-------------+| Id | Name | Salary | DepartmentId |±—±------±-------±-------------+| 1 | Joe | 70000 | 1 ...原创 2019-08-22 14:54:50 · 243 阅读 · 0 评论 -
MySQL变量的使用
MySQL变量的使用在mysql文档中,mysql变量可分为两大类,即系统变量和用户变量。但根据实际应用又被细化为四种类型,即局部变量、用户变量、会话变量和全局变量。一、局部变量mysql局部变量,只能用在begin/end语句块中,比如存储过程中的begin/end语句块。其作用域仅限于该语句块。-- declare语句专门用于定义局部变量,可以使用default来说明默认值dec...转载 2019-08-22 11:35:24 · 170 阅读 · 0 评论 -
MySQL的分组、排序、行号
基础数据:select * from sqldb.user_entry_log 1 MySQL分组后添加行号MySQL中,给数据分组、然后给每组中的数据添加行号。注意:group by分组后,只能取出第一条记录,所以这里的分组,直接使用order by对排序关键字进行排序,间接完成了分组。select case when @pre_user_id = user_id then @...原创 2019-08-15 23:40:50 · 1023 阅读 · 0 评论 -
Limit
首先展示所用的数据:选出所有数据,并添加行号select (@row_number:=@row_number + 1) as rowNumber,user_id,entry_timefrom sqldb.user_entry_log,(select @row_number:=0) t1 Limit的参数1.1 一个参数如果只有一个参数n,表示最多返回前n条记录。select * ...原创 2019-08-15 22:26:13 · 214 阅读 · 0 评论 -
leetcode 176第2高的数、177 第N高的数、178 分数排名
leetcode 177 第N高的数编写一个 SQL 查询,获取 Employee 表中第 n 高的薪水(Salary)。±—±-------+| Id | Salary |±—±-------+| 1 | 100 || 2 | 200 || 3 | 300 |±—±-------+例如上述 Employee 表,n = 2 时,应返回第二高的薪水 200...原创 2019-08-19 22:15:54 · 298 阅读 · 0 评论 -
SQL inner join、left join、right join、full join
1 一张图介绍各种连接的结果集合原创 2019-06-11 10:58:07 · 248 阅读 · 0 评论 -
SQL高级查询总结
1 union(子查询1) union (子查询2)使用情况:需要将两部分的结果“加”到一起,而这两部分的查询逻辑完全不同。注意:union会自动将最后的结果去重。如果不想对最终结果去重,需要使用union all。每个子查询必须用括号括起来。如果在子查询中需要排序,那么order by必须与limit一起使用,排序才能生效。不然union会对没有limit的order by 优化。(...原创 2019-05-29 08:58:10 · 941 阅读 · 0 评论 -
SQL优化——小于和小于等于
1 <与<=<= 比 < 性能好empno<7901与empno<=7900的区别 :使用empno<7901会定位到7901,然后再去找比7901小的数据使用empno<=7900d自己定位到7900在查询数据量大,并且在循环语句中使用这2个比较操作符时,区别就很明显。验证:参考文献:where字句有关的优化+使用where字句代...原创 2019-05-31 10:08:14 · 7937 阅读 · 0 评论 -
SQL优化 —— in与not in
文章从三方面介绍:查询集合,查询出错率,查询效率。总结出两点:in后的查询集合不确定例如in (select…),应判断内查询与外查询的关系。当内查询的表小时(小于外查询的表),用in效率高。当外查询的表小时(小于内查询的表),用exists效率高。(因为in 先执行内查询,再执行外查询;而 exists先执行外查询再执行内查询)in后的查询集合是确定且有限集合内的值连续时,应尽可能使用...原创 2019-05-30 16:12:42 · 25686 阅读 · 3 评论 -
58数据分析实习SQL学习
1 动态时间变量动态时间变量:where aa.dt = ‘${#date(0,0,-1):yyyy-MM-dd#}’yyyy-MM-dd是起始日期,会默认为今天的日期,也可以将其中的一部分设置为固定的格式,例如:yyy-MM-05设置为固定的当前年的当前月的5号。date(0,0,-1),为日期变化,此处表示将dd减一天。...原创 2019-05-20 12:13:11 · 818 阅读 · 0 评论 -
SQL优化 之 explain
Explan简介1 id2 select_type作用:表示查询类型,主要用于区别普通查询,联合查询、子查询等的复杂查询类型。1.1 simple简单的select查询,查询中不包含子查询、union。3 table当前执行的表。4 partitions5 type按性能排序:system>const>eq_ref>ref>range>index&...原创 2019-05-10 11:31:51 · 548 阅读 · 0 评论 -
SQL
1 列举至少3个Mysql的具体优化?(1)适当的对表里的字段建立索引索引是提高数据库性能的常用方法,它可以令数据库服务器以比没有索引快得多的速度检索特定的行。但是索引不能随便建立,具体建立索引的地方,建议如下:1)查询语句当中包含有MAX(),MIN()和ORDERBY这些命令的时候。2)用于JOIN,WHERE判断和ORDERBY排序的字段上。3)尽量不要对数据库中某个含有大量重复的...原创 2019-09-07 23:53:01 · 155 阅读 · 0 评论