美文网首页
T-SQL精髓总结

T-SQL精髓总结

作者: Binary_r | 来源:发表于2021-01-08 19:33 被阅读0次

一、WITH(NOLOCK)

1、使用WITH(NOLOCK)时查询不受其它排他锁阻塞

2、WITH(NOLOCK) 不发布共享锁来阻止其他事务修改当前事务读取的数据

使用场景

1: 基础数据表,这些表的数据很少变更。
2:历史数据表,这些表的数据很少变更。
3:业务允许脏读情况出现涉及的表。
4:数据量超大的表,出于性能考虑,而允许脏读。

二、批量操作

方法一:使用子查询

使用IN 或 exists关键字

in是把外表和内表作hash 连接,而exists 是对外表作循环,每次循环再对内表进行查询。
一直以来认为exists 比in 效率高的说法是不准确的。如果查询的两个表大小相当,那么用in 和exists 差别不大。
如果两个表中一个较小,一个是大表,则子查询表大的用exists,子查询表小的用in

NOT IN 或 NOT EXISTS

如果查询语句使用了not in 那么内外表都进行全表扫描,没有用到索引;
而not extsts 的子查询依然能用到表上的索引。所以无论那个表大,用not exists 都比not in 要快。

方法二:使用JOIN关联表

如果直接对多个数据库表进行join,数据量很大时,效率很低

解决方案:采用临时表

CREATE TABLE #tmp
(
    ID INT IDENTITY(1,1) PRIMARY KEY,
    ItemNumber CHAR(25),
    CountryCode CHAR(3)
)

将需要处理的数据关键信息存入临时表,使用临时表进行join,大大提升性能

三、循环操作

游标CURSOR

DECLARE Template_Cursor CURSOR
FOR
SELECT LastName, FirstName FROM Northwind.dbo.Employees
OPEN Template_Cursor 
FETCH NEXT FROM Template_Cursor 
INTO @LastName, @FirstName

WHILE @@FETCH_STATUS = 0
BEGIN
      .....
      FETCH NEXT FROM Template_Cursor 
END

CLOSE Template_Cursor 
DEALLOCATE Template_Cursor 

@@fetch_status

@@fetch_status是MicroSoft SQL SERVER的一个全局变量
其值有以下三种,分别表示三种不同含义:【返回类型integer】
0 FETCH 语句成功
-1 FETCH 语句失败或此行不在结果集中
-2 被提取的行不存在
@@fetch_status值的改变是通过fetch next from实现的
“FETCH NEXT FROM Cursor”

四、类型转换

将int类型转化为char
select CAST(20201015 AS CHAR(10))

将int类型转化为char再转化为date
select CAST(CAST(20201015 AS CHAR(10)) AS DATE)

对datetime进行计算以后转为date类型
SELECT CAST(DATEADD(DAY, -180, GETDATE()) as DATE)

对日期进行运算以后截取为char,再转为int类型
DECLARE @start_date INT = CONVERT(INT,CONVERT(CHAR(10), DATEADD(d, -180, GETDATE()), 112))

相关文章

  • T-SQL精髓总结

    一、WITH(NOLOCK) 1、使用WITH(NOLOCK)时查询不受其它排他锁阻塞 2、WITH(NOLOCK...

  • T-SQL语言

    T-SQL语言 1 T-SQL运算 T-SQL提供了几类运算符:算术运算、位运算、比较运算、逻辑运算、字符串连接运...

  • 实验四 T-SQL语言基本流程控制语句

    实验四 T-SQL****语言基本流程控制语句 一.实验目的: \1. 掌握T-SQL语言的基本语法格式。 \2....

  • 心学精髓总结

    王阳明的心学精髓,总结一下可以概括为:四句话和六个字。 四句话即: 无善无恶心之体,有善有恶意之动,知善知恶是良知...

  • 实体完整性约束

    实验目的 1.掌握交互式和T-SQL创建PRIMARY KEY约束的方法。2.掌握交互式和T-SQL创建UNIQU...

  • 【SQL Server 第1篇】T-SQL概述

    T-SQL是SQL Server系统产品独有的关系数据库系统语言。 T-SQL主要由三部分组成 DDL:数据定义语...

  • 日入一词_88:manipulate

    Using T-SQL, you can write data manipulation queries that...

  • T-SQL基础(五)之增删改

    在前面的文章中对T-SQL的查询做了基本总结,接下来我们看下SQL中的另外一个常用操作——数据的修改。 INSER...

  • SQL Server 2012 T-SQL Recipes A

    下载地址:SQL Server 2012 T-SQL Recipes A Problem-Solution App...

  • 存储过程简介

    什么是存储过程:存储过程可以说是一个记录集吧,它是由一些T-SQL语句组成的代码块,这些T-SQL语句代码像一个方...

网友评论

      本文标题:T-SQL精髓总结

      本文链接:https://www.haomeiwen.com/subject/tpnfaktx.html