首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

大战SQL类型及其属性

SQL学习历程 MySQL也有好几天没看了,部分语句都已不太熟悉,得赶快拿起来温习温习。...上次讲到了类型的枚举类型,那么接下来还有集合记录长度,属性倒不是特别多,也就有空属性,描述以及默认值,所以学起来也是超快~ 集合字符串 集合跟枚举实际上很类似,实际上存储的是数值,而不是字符串(集合可以多选...下面可以开始讲述属性的三个小部分啦~ 属性 是真正约束字段的数据类型。...属性有很多:NULL/NOT NULL,default,primary key,auto_increment,comment(描述表的字段) 这里讲到的是空属性,描述和默认值。...描述(注释) 描述:comment,起描述作用,无实际意义。是专门用来描述字段,根据表的创建语句一起保存的。

1.3K30
您找到你想要的搜索结果了吗?
是的
没有找到

实战演练:通过伪、虚拟实现SQL优化

一.通过伪、虚拟实现SQL优化 慢 SQL 文本如下: ? SQL 执行时长达 38S,获取 361 条数据结果返回。 SQL 执行计划如下: ?...虚拟实现SQL优化 分析 SQL 可知,SQL 的性能瓶颈在于 a.minute = DATE_FORMAT(b.create_time, '%H:%i') 两表之间的关联关系,SQL 无法通过表之间的关联关系直接驱动...无法通过创建函数索引来优化该 SQL。 这时候 SQL 如何在不改变业务的需求下继续深入优化呢? MySQL 5.7 增加了虚拟的新功能,可以类似的实现 Oracle 函数索引。...伪的引入,可以强制 SQL 改变表之间的关联顺序,获得想要的执行计划。将 SQL 改写成如下方式: ? SQL 在 0.004s 之后即返回查询结果。 执行计划如下: ?...,等价改写SQL改变表的驱动方式,也仅仅只将 SQL 的执行时间由 13s 优化为7s,SQL 真正的性能瓶颈在于对 150W 数据的 inputlog 表按 ShenFenZhengID 去重。

1.7K31

SQL 将多的数据转到一

假设我们要把 emp 表中的 ename、job 和 sal 字段的值整合到一中,每个员工的数据(按照 ename -> job -> sal 的顺序展示)是紧挨在一块,员工之间使用空行隔开。...PRESIDENT 5000 (NULL) MILLER CLERK 1300 (NULL) 解决方案 将多的数据整合到一展示可以使用...使用 case when 条件1成立 then ename when 条件2成立 then job when 条件3成立 then sal end 可以将多的数据放到一中展示,一行数据过 case...when 转换后最多只会出来一个的值,要使得同一个员工的数据能依次满足 case when 的条件,就需要复制多份数据,有多个条件就要生成多少份数据。...完整的SQL 如下: SELECT CASE rn WHEN 1 THEN ename WHEN 2 THEN job WHEN 3 THEN

5.3K30

SQL Server 2014聚集存储索引

SQL Server 2012中首次引入了基于存储数据格式的存储方式。叫做“存储索引”。..., rowversion , sql_variant,精度大于18 的decimal,CLR 和xml等)    另一方面,对于索引900字节的限制也不适用与存储索引。...在SQL Server2012 中,只能创建非聚集存储索引,并且不能更新。为了更新你必须删除索引,然后进行插入、更新或者删除的操作后在重建索引。...这个存储索引扫描操作符如下所示: ? 如上所示,Estimated I/O Cost从0.183866下降到0.0112731,这是因为SQL引擎只检索需要的,节省了IO和内存资源。...与非聚集索引创建类似,选择,然后这些没有排序也不能使用Include选项: ? 下图中我在SQL Server2014 企业版中,创建聚集索引: ?

99240

SQL Server 2014聚集存储索引

SQL Server 2012中首次引入了基于存储数据格式的存储方式。叫做“存储索引”。..., rowversion , sql_variant,精度大于18 的decimal,CLR 和xml等)    另一方面,对于索引900字节的限制也不适用与存储索引。...在SQL Server2012 中,只能创建非聚集存储索引,并且不能更新。为了更新你必须删除索引,然后进行插入、更新或者删除的操作后在重建索引。...: image.png 如上所示,Estimated I/O Cost从0.183866下降到0.0112731,这是因为SQL引擎只检索需要的,节省了IO和内存资源。...总结: 存储索引是一个使用SQL Server性能优化的方案,通过减少IO消耗,尤其对数据仓库和BI查询都是由明显性能提升。它通过排序数据作为存储,然后压缩,并使用批处理来处理数据。

97090

SQL中的行转列和转行

导读 SQL是IT行业很多岗位都要求具备的一项能力,对于数据岗位而言更是如此,甚至说扎实的SQL基础也往往是入职这些岗位的必备技能。...而在SQL面试中,一道出镜频率很高的题目就是行转列和转行的问题,可以说这也是一道经典的SQL题目,本文就这一问题做以介绍分享。 ? 给定如下模拟数据集,这也是SQL领域经典的学生成绩表问题。...scoreWide 考察的问题就是通过SQL语句实现在这两种形态间转换,其中长表转为宽表即行转列,宽表转为长表即转行。...02 转行:union 转行是上述过程的逆过程,所以其思路也比较直观: 行记录由一行变为多行,字段由多变为单列; 一行变多行需要复制,字段由多变单列相当于是堆积的过程,其实也可以看做是复制;...这实际上对应的一个知识点是:在SQL中字符串的引用用单引号(其实双引号也可以),而字段名称的引用则是用反引号 上述用到了where条件过滤成绩为空值的记录,这实际是由于在原表中存在有空值的情况,如不加以过滤则在本例中最终查询记录有

7K30

SQL Server 2016 存储索引功能增强「建议收藏」

存储索引(columnstore index)在SQL Server 2012中已经引入,其带来性能提升的同时也有很多限制,比如对带有存储索引的表进行INSERT, UPDATE和DELETE时,会遇到如下错误提示...: 由于这种限制,索引存储索引并不太适合在SQL Server 2012 OLTP DB中应用。...不过,SQL Server 2016对存储索引做了很多改进,其中我觉得最大的变化是可更新的存储索引,即可以直接对带有存储索引的表进行INSERT, UPDATE和DELETE,因此,我们可以在SQL...若想具体了解存储索引的概念、特征、创建及使用,可参考我之前整理的Blog。...在SQL 2016环境测试的过程中,我发现存储索引对于有聚集函数的T-SQL,有很好的性能提升,比如下面这个示例,性能提升约15倍: JOIT表有1500833笔记录,复制一份到JOIT_CSI表,2

51310
领券