SQL Server 小技巧【2】

比眉伴天荒 2021-11-17 04:22 412阅读 0赞
  1. --1.不要使用×来查询所有字段
  2. SELECT * FROM DBO.tb1
  3. --改为
  4. SELECT FName,PWD,CreateDate FROM DBO.tb1 (NOLOCK)
  5. --2.查询数据行数
  6. SELECT COUNT(*) FROM tb1
  7. --改为 SELECT * FROM sysindexes WHERE id =OBJECT_ID('dbo.tb1') AND indid <2
  8. --3.数字不要加引号,不然会全盘索引
  9. SELECT * FROM DBO.tb1 (NOLOCK) WHERE Pwd='111111'
  10. --改为
  11. SELECT * FROM DBO.tb1 (NOLOCK) WHERE Pwd=111111

不要对索引字段进行运算

例如:

  1. SELECT ID FROM T WHERE NUM/2=100

应改为:

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

如果NUM有索引应改为:

  1. SELECT ID FROM T WHERE NUM=NUM1*2

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

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

日期字段的例子:

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

应该改为

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

不要对索引字段使用函数

日期查询的例子:

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

应改为:

  1. WHERE NAME LIKE 'ABC%'

日期查询的例子:

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

应改为:

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

应改为:

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

应改为:

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

应改为:

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

应改为:

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

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

例如:

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

应改为:

  1. WHERE FNAME='H' AND LNAME='Y'

转载于:https://www.cnblogs.com/allen0118/p/3684434.html

发表评论

表情:
评论列表 (有 0 条评论,412人围观)

还没有评论,来说两句吧...

相关阅读

    相关 SQL优化技巧

    几个SQL优化小技巧 一、回顾:MySQL的执行过程 回顾 MySQL的执行过程,帮助介绍如何进行SQL优化。 (1)客户端发送一条查询语句到服务器; (2

    相关 PL/SQL技巧

    \[b\]\[size=large\] 一直使用pl/sql,有时候总想偷点懒,其实pl/sql可以设置下使用起来更方便,下面写下我一直用的一些设置,我的pl/sql版本是7.