zoukankan      html  css  js  c++  java
  • SQL 乐色干货笔记

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

    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)

  • 相关阅读:
    DataTable 导出到Excel
    asp.net 连接新浪微博
    ASP.NET中的HTTP模块和处理程序
    asp.net 前台获得url参数的最简单方法
    将Excel导入到DataTable (用ODBC方法连接)
    下拉框控件dhtmlXCombo在ASP.NET中的使用详解
    iis站点 asp.net网站访问弹出提示框
    习惯的力量
    1.面向对象设计模式与原则
    5. Factory Method 工厂方法(创建型模式)
  • 原文地址:https://www.cnblogs.com/ya-jun/p/11662727.html
Copyright © 2011-2022 走看看