因为公司基本都是用存储过程所以本来写的干货基本都是存储过程的。

SELECT TOP 1 Code,Invitation,Num,Typ FROM SignLog WITH(NOLOCK)
WHERE UserId=@userId AND TaskId=2 AND AddTime>=@stime AND AddTime<@etime

用以上语句来说一下例子:

查询 一定要指定字段就算你要查全部字段也不要用*号来代替   ,以及  能用TOP尽量TOP

避免没必要的锁 必须加   WITH(NOLOCK) 避免产生没有必要的锁出来。

因为字段多,数据多一个索引没有走。

加了字段后就会快很多比你查全部的快很多,精准的查询。

------------------------------------------------------------------------------------------------------------

 UserId=@userId AND TaskId=2 AND AddTime>=@stime AND AddTime<@etime

如果UserId和AddTime是索引,TaskId不是,那像上面这样只会走一个索引。

 

UserId=@userId AND AddTime>=@stime AND AddTime<@etime AND TaskId=2
如果改成上面这样就会走两个索引。

UPDATE SignLog SET NUM+=1
WHERE UserId=@userId AND AddTime>=@stime AND AddTime<@etime AND TaskId=2
像上面这样的更改语句这样写是没有什么的,如果是在存储过程写的话像下面一样写会比你上面写法快。
DECLARE @ID INT=0
SELECT TOP 1 @ID=ID FROM SignLog WITH(NOLOCK) WHERE UserId=@userId AND AddTime>=@stime AND AddTime<@etime AND TaskId=2
UPDATE SignLog SET NUM+=1 WHERE ID=@ID

像这样写正常会快点,而且也不会产生没有必要的锁出来,而且该走的索引都走了。

能走索引就走索引,索引肯定比你正常的快丶丶。

-------------------------------------------------------------------------------------------------------------

UPDATE dbo.Activity_RoomActivity SET ActivityState=2 WHERE  ActivityState=0 AND StartTime<DATEADD(hh,-1,GETDATE())
这样更新一个索引没有走上,而且还一条一条改。

可以改成以下差不多的。
     SELECT Id INTO #temp
FROM dbo.Activity_RoomActivity WITH(NOLOCK)
WHERE ActivityState=0 AND StartTime<DATEADD(hh,-1,GETDATE()) UPDATE t1 SET t1.ActivityState=2 FROM dbo.Activity_RoomActivity t1,#temp t2
WHERE t1.Id=t2.Id

这样修改的时候就会走索引去修改。

SELECT DATEDIFF(S,'1970-01-01 8:00:00', @addTime)

SQL 乐色干货笔记的更多相关文章

  1. SQL Server技术内幕笔记合集

    SQL Server技术内幕笔记合集 发这一篇文章主要是方便大家找到我的笔记入口,方便大家o(∩_∩)o Microsoft SQL Server 6.5 技术内幕 笔记http://www.cnbl ...

  2. SQL Server 2012 数据库笔记

    慕课网 首页 实战 路径 猿问 手记     Python 手记 \ SQL Server 2012 数据库笔记 SQL Server 2012 数据库笔记 2016-10-25 16:29:33 1 ...

  3. 《Troubleshooting SQL Server》读书笔记-CPU使用率过高(下)

    <Troubleshooting SQL Server>读书笔记-CPU使用率过高(下) 第三章 High CPU Utilization. CPU使用率过高的常见原因 查询优化器会尽量从 ...

  4. SQL反模式学习笔记1 开篇

    什么是“反模式” 反模式是一种试图解决问题的方法,但通常会同时引发别的问题. 反模式分类 (1)逻辑数据库设计反模式 在开始编码之前,需要决定数据库中存储什么信息以及最佳的数据组织方式和内在关联方式. ...

  5. SQL反模式学习笔记5 外键约束【不用钥匙的入口】

    目标:简化数据库架构 一些开发人员不推荐使用引用完整性约束,可能不使用外键的原因有一下几点: 1.数据更新有可能和约束冲突: 2.当前的数据库设计如此灵活,以至于不支持引用完整性约束: 3.数据库为外 ...

  6. SQL反模式学习笔记3 单纯的树

    2014-10-11 在树形结构中,实例被称为节点.每个节点都有多个子节点与一个父节点. 最上层的节点叫做根(root)节点,它没有父节点. 最底层的没有子节点的节点叫做叶(leaf). 中间的节点简 ...

  7. SQL反模式学习笔记2 乱穿马路

    程序员通常使用逗号分隔的列表来避免在多对多的关系中创建交叉表, 将这种设计方式定义为一种反模式,称为“乱穿马路”. 目标:  存储多属性值,即多对一 反模式:将多个值以格式化的逗号分隔存储在一个字段中 ...

  8. SQL反模式学习笔记4 建立主键规范【需要ID】

    目标:建立主键规范 反模式:每个数据库中的表都需要一个伪主键Id 在表中,需要引入一个对于表的域模型无意义的新列来存储一个伪值,这一列被用作这张表的主键, 从而通过它来确定表中的一条记录,即便其他的列 ...

  9. SQL反模式学习笔记6 支持可变属性【实体-属性-值】

    目标:支持可变属性 反模式:使用泛型属性表.这种设计成为实体-属性-值(EAV),也可叫做开放架构.名-值对. 优点:通过增加一张额外的表,可以有以下好处 (1)表中的列很少: (2)新增属性时,不需 ...

随机推荐

  1. python源码解剖

    print()本身就是用了多态:不同类型的对象,其实是调用了自身的print()方法 多态:动物 狗1 = new狗() 用公共的部分来指定类型,实则是调用各自的属性 创建对象有两种方式: 通过C A ...

  2. ESA2GJK1DH1K升级篇: 移植远程更新程序到STM32F103RET6型号的单片机,基于(GPRS模块AT指令TCP透传方式)

    前言 上节实现远程更新是更新的STM32F103C8T6的单片机 GPRS网络(Air202/SIM800)升级STM32: 测试STM32远程乒乓升级,基于(GPRS模块AT指令TCP透传方式),定 ...

  3. postman使用--Monitor

    前戏 现在我们已经能完成接口的批量执行,添加断言,数据驱动,设置变量等等方法.但是有一天,用户反应说我们的网站访问不了了.这时候,那帮程序猿查日志的查日志,看数据库的看数据库,找到原因在发布到线上已经 ...

  4. P3258 [JLOI2014]松鼠的新家题解

    题目描述 松鼠的新家是一棵树,前几天刚刚装修了新家,新家有\(n\)个房间,并且有\(n-1\)根树枝连接,每个房间都可以相互到达,且俩个房间之间的路线都是唯一的.天哪,他居然真的住在"树& ...

  5. nuxtjs如何部署cdn及区分发布环境

    1.部署cdn nuxt  build 后的前端资源都会存放在.nuxt/dist/ 文件夹下面 img 目录存放的是使用到的图片资源,无论是开发中存放在 assets 文件夹里的,还是static里 ...

  6. idea输出文件夹没有jsp页面

    目录 idea输出文件夹没有jsp页面 问题描述 解决办法 idea输出文件夹没有jsp页面 问题描述 开始创建没有使用web的模板, 自己创建tomcat等配置, 后来启动发现没有index.jsp ...

  7. 关联分析-MIC

    MIC:the Maximal Information Coefficient,是用网格分法判断数据的集中程度的一个标准. MIC所依据的理念是,如果2个变量之间存在着一种关系,那么就应该有一种方法在 ...

  8. Spring Events

    https://www.baeldung.com/spring-events by Eugen Paraschiv Spring+ I just announced the new Learn Spr ...

  9. 聊一聊 JS 输出为 [object object] 是怎么回事?

    聊一聊 JS 输出为 [object object] 是怎么回事? 今天在学习ES6中的 Symbol 数据类型时,在写demo时控制台输出为 Symbol[object object] ,当时有点疑 ...

  10. pandas 获取不符合条件的dataframe

    pandas 获取不符合条件的dataframe 或将其过滤掉: df[df["col"].str.contains('this'|'that')==False] >> ...