SQL Server探索

探索SQL Server,分享知识

排序:
默认
按更新时间
按访问量

改写优化SQL(7):尽量不用count(*)来判断是否有数据

一、首先说一下,判断表里是否有记录,常见的写法(伪代码):定义变量a a = (select count(*) from tb) if a >0 ... else ...这么写是没错,看上去也好理解,就是统计一下tb表中的记录数,然后判断这个记录数是否大于...

2018-03-08 13:01:11

阅读数:188

评论数:1

python中pandas模块实现SQL Server中的select

python连接sql server的方法,可以参考这篇文章:python连接SQL Server:Pymssql模块 基于下面的数据,分别用sql 和 python,实现数据集的关联,得到 学生、课程、成绩 的数据。 建表可以参考:python中pandas的集合关联(merge...

2018-02-03 21:42:00

阅读数:215

评论数:0

python中pandas模块(join方法)实现SQL Server中的表关联join

python连接sql server的方法,可以参考这篇文章:python连接SQL Server:Pymssql模块 基于下面的数据,分别用sql 和 python,实现数据集的关联,得到 学生、课程、成绩 的数据。 建表可以参考:python中pandas的集合关联(merge) 与S...

2018-02-03 21:34:23

阅读数:218

评论数:0

python中pandas模块(merge方法)实现SQL Server中的表关联join

python连接sql server的方法,可以参考这篇文章:python连接SQL Server:Pymssql模块 基于下面的数据,分别用sql 和 python,实现数据集的关联,得到 学生、课程、成绩 的数据。 建表 --学生 CREATE TABLE student ...

2018-02-03 09:42:13

阅读数:208

评论数:0

SQL Server 2017新增:trim函数(移除左右空格、指定字符)

SQL Server 2017新增了 trim函数,实现移除左右两侧的空格,以及删除左右两侧指定字符。 语法: TRIM ( [ characters FROM ] string )  默认参数是 string 字符串,前面的characters  from 一起用,表示要从...

2018-01-29 15:31:50

阅读数:205

评论数:0

SQL Server 2017新增:string_agg函数(分组合并字符串)

SQL Server 2017新增了 string_agg函数,可以轻松实现分组合并字符串,而不是用xml path,或者写个自定义 函数来实现。 语法: STRING_AGG ( expression, separator ) [ ] ::=        WITHIN GR...

2018-01-29 15:10:11

阅读数:328

评论数:0

SQL Server 2017新增:Translate 函数(实现批量替换)

SQL Server 2017新增 Translate 函数,可以实现批量替换。 语法如下: TRANSLATE ( 输入字符串, 要替换的字符, 替换成的字符)  也就是把输入字符串中的 要进行替换的字符,替换为其他字符。 比如,现在有个字符串: 123#456*789!/0...

2018-01-29 14:39:56

阅读数:189

评论数:0

Linux安装SQL Server 2017(连接篇SQL Server on linux)

安装篇:Linux下安装SQL Server 2017(安装篇) 连接篇:Linux下安装SQL Server 2017(连接篇) 连接数据库 (1)下载客户端连接工具的源 curl -o /etc/yum.repos.d/msprod.repo https://pac...

2018-01-29 14:05:58

阅读数:264

评论数:0

Linux安装SQL Server 2017(安装篇SQL Server on linux)

之前写过,Linux下安装SQL Server 2016的文章如下: 准备篇:Linux下安装SQL Server 2016(准备篇) 安装篇:Linux下安装SQL Server 2016(安装篇) 连接篇:Linux下安装SQL Server 2016(连接篇) 2017年10...

2018-01-29 12:47:58

阅读数:1076

评论数:0

SQL Server 2016新增:string_split函数(拆分字符串)

SQL Server 2016新增了string_split函数,专门用来拆分字符串。 之前,在开发中经常会有拆分字符串的需求,要么用xml来实现, 要么写个自定义函数来实现。 所以,期盼了很久,总算有这个函数了,必须要SQL Server开发组点个赞。 希望以后还能有个string_joi...

2018-01-28 16:36:35

阅读数:624

评论数:0

改写优化SQL(6):尽量少用标量子查询

前面几篇文章讲到了: 标量子查询、聚合标量子查询、行转列标量子查询、带top的标量子查询 如何转成left join。 之所以要转换,主要是因为标量子查询虽然写法上比较直观,容易理解,不用想就知道怎么写,但是存在:代码重复、多次访问同一个表 问题,所以效率比较低。 一、标量子查询的模...

2018-01-25 12:29:47

阅读数:959

评论数:0

改写优化SQL(5):带top的标量子查询改写

带top的标量子查询,是在标量子查询中,加上了top 1,因为如果不加top 1,关联后可能返回超过1条数据,就导致sql报错了。 但是加了top 1,又没有排序,比如:去最早的一条,或者最晚的一条。 这种写法,在语义上有点随意,因为top 1就是随机返回一条,这种写法不是很严谨,从语...

2018-01-24 11:40:40

阅读数:177

评论数:0

改写优化SQL(4):行转列标量子查询改为left join

前面两篇文章写的是,如何把 标量子查询、聚合标量子查询,转为 left join,标量子查询还可以实现行转列,但是同样的,销量比较差,建议转成 left join。 (1)建表 --学生表 CREATE TABLE student ( s# INT , sn...

2018-01-24 11:39:05

阅读数:179

评论数:0

改写优化SQL(3):聚合标量子查询改为left join

聚合标量子查询,是标量子查询的升级版,因为不是简单的返回一个字段,而是要对字段求 sum,avg等,也就是标量子查询+聚合函数。 但是这种写法,本质上还是标量子查询的写法,所以效率不高,建议改为left join方式。 (1)建表 CREATE TABLE tb_emp ( ...

2018-01-24 11:37:27

阅读数:195

评论数:0

改写优化SQL(2):not in改为left join

在sql语句中,not in是经常会用到的一种写法,因为这种写法很直观,容易理解。 但如果不注意的话,很容易写出错误的sql,而且性能存在严重问题,所以,不建议使用not in,要尽量把 not in写法,改为left join。 一、建表 CREATE TABLE tb_emp ( e...

2018-01-24 11:34:07

阅读数:617

评论数:0

改写优化SQL(1):标量子查询改为left join

标量子查询就是在select中出现的子查询,效率相对来说比较低,建议修改为效率更高的left join。 一、建表 CREATE TABLE tb_emp ( emp_id INT NOT NULL PRIMARY KEY CLUSTERED, emp_name VARCHAR(20) N...

2018-01-24 11:33:27

阅读数:367

评论数:0

SQL Server2016新特性(3):把数据转成JSON格式

SQL Server 2016 针对导入和导出 JSON 以及处理 JSON 字符串添加了内置支持,本文主要讲如何把数据转成json格式。 一、建表 创建tb_emp、tb_org两个表,插入数据。 CREATE TABLE tb_emp ( emp_id INT NOT NUL...

2018-01-24 10:25:54

阅读数:122

评论数:0

SQL Server2016新特性(2):时态表 Temporal Table

SQL Server 2016 引入了对版本由系统控制的临时表的支持,其附带的内置支持可以提供表中存储的数据在任意时间点的相关信息,而不仅仅是数据在当前时刻正确的信息。 临时表是 ANSI SQL 2011 中引入的数据库功能。 版本由系统控制的临时表是用户表的一种类型,旨在保留完整的数据更改历...

2018-01-24 10:25:48

阅读数:540

评论数:0

SQL Server2016新特性(1):动态的显示执行计划(效果类似小视频)

SQL Server2016种的一个新特性是 可以动态的显示 执行计划的过程,就像小视频一样的效果。 一、准备工作 在数据库有一个表tb,数据量在8000w左右,如果数据量少了,显示的动态过程会一闪而过。 演示的例子很简单,就是要计算tb表的准确记录数,代码如下: SELECT...

2018-01-24 10:25:20

阅读数:143

评论数:0

索引的访问方式:索引查找、索引扫描

索引的访问方式主要是 索引查找、索引扫描。 (1)索引查找 在执行计划中为 index seek,适用于查找少量数据。 对应随机IO,能快速的定位一条数据。 (2)索引扫描 在执行计划中为 index scan,适合扫描整个索引的数据。 对应顺序IO,IO效率本身比较高。 ...

2018-01-24 10:23:24

阅读数:166

评论数:0

提示
确定要删除当前文章?
取消 删除
关闭
关闭