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'
  • 相关阅读:
    江西师范大学瑶湖校区图片
    什么是sp?
    教育技术学硕士点学校排名
    西南师大教育技术学专业2005年入学考试信息
    什么是"工包"?
    买书网址
    2006年全国教育技术学专业新增硕士点
    今天终于拿到书了
    2007年教育学专业基础综合考试大纲(重要部分) ——下载地址
    电脑DIY推荐
  • 原文地址:https://www.cnblogs.com/allen0118/p/3684434.html
Copyright © 2011-2022 走看看