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'

 

时间: 2024-11-02 00:13:56

SQL Server 小技巧【2】的相关文章

SQL Server优化技巧之SQL Server中的&quot;MapReduce&quot;

原文:SQL Server优化技巧之SQL Server中的"MapReduce" 日常的OLTP环境中,有时会涉及到一些统计方面的SQL语句,这些语句可能消耗巨大,进而影响整体运行环境,这里我为大家介绍如何利用SQL Server中的"类MapReduce"方式,在特定的统计情形中不牺牲响应速度的情形下减少资源消耗. 我们可能经常会利用开窗函数对巨大的数据集进行分组统计排序.比如下面的例子: 脚本环境 /* This script creates two new

两个SQL Server维护技巧

确实,数据库的维护常常交给那些专业的数据库管理员,但是作为一个开发者,你也许偶尔需要暂时从事这个工作.所以,试一试这两个SQL服务器维护技巧:轻松改变数据库拥有者.整理索引碎片.谁会想到你甚至可以给那些数据库管理员教上一两个新技巧呢? 重指定数据库拥有者当回复或者新建数据库时,你有没有注意到SQL Server把数据库的拥有者置为你的NT登录名?仅仅为了确保不同数据库间的一致性(更别提安全性因素了),你也许考虑用系统过程sp_changedbowner来把数据库拥有者改为其它用户如系统管理员(S

SQL Server维护技巧两则

确实,数据库的维护常常交给那些专业的数据库管理员,但是作为一个开发者,你也许偶尔需要暂时从事这个工作.所以,试一试这两个SQL服务器维护技巧:轻松改变数据库拥有者.整理索引碎片.谁会想到你甚至可以给那些数据库管理员教上一两个新技巧呢? 重指定数据库拥有者 当回复或者新建数据库时,你有没有注意到SQL Server把数据库的拥有者置为你的NT登录名?仅仅为了确保不同数据库间的一致性(更别提安全性因素了),你也许考虑用系统过程sp_changedbowner来把数据库拥有者改为其它用户如系统管理员(

SQL 一些小技巧

技巧 These has been picked up from thread within sqljunkies Forums http://www.sqljunkies.com ProblemThe problem is that I need to round differently (by halves) Example: 4.24 rounds to 4.00, but 4.26 rounds to 4.50. 4.74 rounds to 4.50 and 4.76 rounds t

SQL Server 工作技巧

  1. isnull();函数 在SQL Server 中经常会遇到一些字段为空值,这里可以使用isnull()这个函数来做判断;eg: select isnull(Table_column,'Test') as column from Table 这个语句意思就是:从Table表中取字段Table_column,如果该字段值为空,则用"Test"字符来代替; 2.sysobject SQL Server中有一个系统对象表 sysobject 这个表里存储了数据库中所有的对象,比如约

Sample script that deletes a SQL Server database_javascript技巧

Sample script that deletes a SQL Server database. Supported Platforms SQL Server 2000  Yes Script Code 复制代码 代码如下: strDBServerName = "."  strDBToDelete       = "ScriptingGuysTestDB"  Set objSQLServer = CreateObject("SQLDMO.SQLServe

Sample script that displays all of the users in a given SQL Server DB_javascript技巧

Sample script that displays all of the users in a given SQL Server DB. Supported Platforms SQL Server 2000  Yes Script Code 复制代码 代码如下: strDBServerName = "."  strDBName = "ScriptingGuysTestDB"  Set objSQLServer = CreateObject("SQLD

SQL查询优化小技巧

使用 :SELECT rows FROM sysindexes WHERE id = OBJECT_ID(' 表名') AND indid < 2   代替:Select Count(*) From Table    

T-sql语句修改SQL Server数据库逻辑名、数据库名、物理名的方法_MsSql

本文实例讲述了T-sql语句修改SQL Server数据库逻辑名.数据库名.物理名的方法.分享给大家供大家参考,具体如下: 更改MSSQL数据库物理文件名Sql语句的写法 注意:要在活动监视器里面确保没有进程连接你要改名的数据库!!!!!!!!!!!!!!!!!!!! Sql语句如下 USE master --改逻辑名 ALTER DATABASE YQBlog MODIFY FILE(NAME='YQBlogAA',NEWNAME='YQBlog') -- GO ALTER DATABASE