zoukankan      html  css  js  c++  java
  • SQL Server 小技巧【2】

    --1.不要使用×来查询所有字段
    SELECT * FROM  DBO.tb1
    --改为
    SELECT FName,PWD,CreateDate FROM DBO.tb1 (NOLOCK)
    
    --2.查询数据行数
    SELECT COUNT(*) FROM tb1
    --改为

    SELECT * FROM sysindexes WHERE id =OBJECT_ID('dbo.tb1') AND indid <2


    --3.数字不要加引号,不然会全盘索引 SELECT * FROM DBO.tb1 (NOLOCK) WHERE Pwd='111111' --改为 SELECT * FROM DBO.tb1 (NOLOCK) WHERE Pwd=111111

    不要对索引字段进行运算

    例如:

    SELECT ID FROM T WHERE NUM/2=100

    应改为:

    SELECT ID FROM T WHERE NUM=100*2
    
    SELECT ID FROM T WHERE NUM/2=NUM1

    如果NUM有索引应改为:

    SELECT ID FROM T WHERE NUM=NUM1*2

    如果NUM1有索引则不应该改。

    不要对索引字段进行格式转换

    日期字段的例子:

    WHERE CONVERT(VARCHAR(10),日期字段,120)='2014-08-15'

    应该改为

    WHERE 日期字段>='2008-08-15'  AND 日期字段<'2014-08-16'

    不要对索引字段使用函数

    日期查询的例子:

    WHERE LEFT(NAME, 3)='ABC' 或者 WHERE SUBSTRING(NAME,1, 3)='ABC' 

    应改为:

    WHERE NAME LIKE 'ABC%'

    日期查询的例子:

    WHERE DATEDIFF(DAY, 日期,'2010-11-30')=0

     应改为:

    WHERE 日期>='2010-11-30' AND 日期<'2010-12-1'
    WHERE DATEDIFF(DAY, 日期,'2010-11-30')>0

     应改为:

    WHERE 日期<'2010-11-30'
    WHERE DATEDIFF(DAY, 日期,'2010-11-30')>=0

    应改为:

    WHERE 日期<'2010-12-01'
    WHERE DATEDIFF(DAY, 日期,'2010-11-30')<0

    应改为:

    WHERE 日期>='2010-12-01'
    WHERE DATEDIFF(DAY, 日期,'2014-11-30')<=0

    应改为: 

    WHERE 日期>='2010-11-30'

    不要对索引字段进行多字段连接

    例如:

    WHERE FAME+'.'+LNAME='H.Y'

    应改为:

    WHERE FNAME='H' AND LNAME='Y'
  • 相关阅读:
    jvm基本结构和解析
    多态的意思
    java中对象的简单解读
    double类型和int类型的区别
    python 解析xml文件
    win10不能映射Ubuntu共享文件
    Qt程序打包
    Ubuntu boot分区文件误删,系统无法启动,怎么解
    ubuntu Boot空间不够问题“The volume boot has only 5.1MB disk space remaining”
    Ubuntu 分辨率更改 xrandr Failed to get size of gamma for output default
  • 原文地址:https://www.cnblogs.com/allen0118/p/3684434.html
Copyright © 2011-2022 走看看