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=''
--改为
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'
SQL Server 小技巧【2】的更多相关文章
- sql server 小技巧(8) visual studio 2013里使用Sql server compact 4.0及发布问题处理
1. 安装 Microsoft SQL Server Compact 4.0 https://www.microsoft.com/zh-cn/download/confirmation.aspx?i ...
- sql server 小技巧(2) 删除sql server中重复的数据
with list_numbers as ( select Name, AuthorOrTime, Url, Price, EstimatePrice, Size, Category, ROW_NUM ...
- sql server 小技巧(1) 导入csv数据到sql server
1. 右击 DataBaseName,选择 Tasks->Import Data 2. 选择数据源: Flat File Source , 选择一个csv文件 Advance: 选择所有的列,改 ...
- sql server 小技巧(7) 导出完整sql server 数据库成一个sql文件,包含表结构及数据
1. 右健数据库 –> Tasks –> Generate Scripts 2. 选择所有的表 3. 下一步,选择Advanded, Types of data to script ...
- sql server 小技巧 集锦
sql server 小技巧(1) 导入csv数据到sql server sql server 小技巧(2) 删除sql server中重复的数据 sql server 小技巧(3) SQL Serv ...
- sql server 小技巧(6) Cannot resolve the collation conflict between "Latin1_General_CI_AI" and "Chinese_PRC_CI_AS" in the equal to operation
今天查询二个db,出现这个错误,二种方法,一种是把db里的collation改成一样的:如果不方便可以直接在sql语句后面转一下: select * from table where crm_mscr ...
- sql server 小技巧(5) Sql server 获取指定字符后的所有字符 - 去掉指定字符前的所有字符
select top 10 SUBSTRING( sproductcode, CHARINDEX('-', SProductCode)+1, LEN(SProductCode)) from csmr ...
- sql server 小技巧(4) Sql server 排序时让空值排在最后
order by coalesce( u.sort, 2147483647) sql server 小技巧 集锦
- SQL SERVER 小技巧
SQL SERVER 小技巧(不用exec实现in()的功能) declare @x varchar(20) SET @x='1,2,3' SELECT @x select * from data00 ...
- sql server小技巧-自动添加时间与主键自增长
在敲机房收费系统的时候,遇到添加时间的时候总是通过vb端调用当前时间再添到sql server中,期间还有时因为添加时间格式的不统一导致一些小问题,现在才知道原来是自己孤陋寡闻,sql server ...
随机推荐
- java的servlet初步学习
目录 1.servelet概念作用理解 ====来源于孤傲苍狼 http://www.cnblogs.com/xdp-gacl/p/3760336.html======= 2.servlet的运行过 ...
- Java中的HashMap 浅析
在Java的集合框架中,HashSet,HashMap是用的比较多的一种,顺序结构的ArrayList.LinkedList这种也比较多,而像那几个线程同步的容器就用的比较少,像Vector和Hash ...
- eclispse快捷键
Eclipse常用快捷键 1几个最重要的快捷键 代码助手:Ctrl+Space(简体中文操作系统是Alt+/)快速修正:Ctrl+1单词补全:Alt+/打开外部Java文档:Shift+F2 显示 ...
- linux man
man能够为除命令之外的配置文件.系统调用.库调用等都能提供帮助手册,他们分别位于不同的章节中: 1.用户命令 2.系统调用 3.库调用 4.设备文件 5.配置文件 6.游戏 7.杂项 8.管理命令
- Runloop应用实例
AFNetworking AFURLConnectionOperation 这个类是基于 NSURLConnection 构建的,其希望能在后台线程接收 Delegate 回调.为此 AFNetwor ...
- C#:隔离点击任务栏上的图标时的“最小化或者恢复”的效果
通常点击任务栏上的图标时,对应窗体实现“最小化或者恢复”的效果.但是在做最小化到托盘时,不希望点击任务栏图标时最小化到托盘,即希望拦截了这些效果(不允许:通过点击任务栏上的图标,实现“最小化或者恢复” ...
- xtjh
<div onkeydown="javascript:if(event.keyCode==13) search()"> <br > ISBN<span ...
- raw_input() 与 input()
这两个均是 python 的内建函数,通过读取控制台的输入与用户实现交互.但他们的功能不尽相同. >>> raw_input_A = raw_input("raw_inpu ...
- android5.0 编译
android5.0编译需要jdk1.7版本,将来本地可能需要同时维护两套jdk版本,请参考: 在线安装openjdk1.7 sudo apt-get install openjdk-7-jre op ...
- SQL-表链接
查询两张表中相匹配的数据显示,不匹配的忽略 1.简单表连接 select * from 表1,表2 where 表1.字段=表2.字段 2.内链接 select * from 表1 inner joi ...