用心做好每一件事情!

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'

 

posted @   无 影  阅读(295)  评论(0编辑  收藏  举报
编辑推荐:
· go语言实现终端里的倒计时
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
阅读排行:
· 周边上新:园子的第一款马克杯温暖上架
· Open-Sora 2.0 重磅开源!
· 分享 3 个 .NET 开源的文件压缩处理库,助力快速实现文件压缩解压功能!
· Ollama——大语言模型本地部署的极速利器
· DeepSeek如何颠覆传统软件测试?测试工程师会被淘汰吗?
作者: Allen【QQ:96966 1314】 网名:无影 出处: http://www.cnblogs.com/allen0118/ 声明: 本文版权归作者和博客园共有!转载时必须保留此段声明,且在文章页面明显位置给出原文连接。
点击右上角即可分享
微信分享提示