尽量避免在SQL语句中使用OR
----start
在SQL语句中应该尽量避免使用OR,因为这样做会影响SQL语句的性能。考虑下面的情况:
CREATE TABLE USER
(
NAME VARCHAR(20) NOT NULL,---姓名
BIRTHDAY DATE---生日
);
现在有这样一个问题:让你查找一下生日是1949-10-1(共和国同龄人)或1978-12-18(十一届三中全会召开时间)的人,怎么办?
我们很自然就会把这句话翻译成如下SQL语句:
SELECT * from USER WHERE BIRTHDAY='1949-10-1' OR BIRTHDAY='1978-12-18'
这样做完全正确,可是性能不好,你的思想被这个问题束缚了,我们还可以这么写:
SELECT * from USER WHERE BIRTHDAY IN ('1949-10-1','1978-12-18');
有时候,我们不要把自己束缚在问题里面。
---更多参见:DB2 SQL 精要
----声明:转载请注明出处。
----last update at 2009.9.24
----write by wave at 2009.9.24
----end
相关文档:
CareGroup 医疗组织负责保护2TB 的病人信息和相关数据的隐私及完整性。该组织位于波士顿,是Beth Israel Deaconess 医学中心(哈佛医学院的教学医院)以及另外三家地区医院的母公司。CareGroup 采用Microsoft® SQL Server™ 2005,将其数据存储于30个实例的390个数据库中。该组织希望将数据库升级到SQL Server 200 ......
create function dbo.F_Get_No
(
@No varchar(100)
)
RETURNS bigint
AS
BEGIN
WHILE PATINDEX('%[^0-9]%',@No)>0
BEGIN
SET @No=STUFF(@No,PATINDEX('%[^0-9]%',@No),1,'') --删掉一个非数字的字符,循环结束,剩余的为数字部分
END
RETURN CONVERT(bigint,@No ......
获取SQL Server的当前连接数
[转]http://www.cnblogs.com/confach/archive/2006/05/31/414156.html
首先声明:这个问题我没有解决
当网友问到我这个问题时,我也还以为很简单,以为SQL Server应该提供了对应的系统变量什么的.但是到目前为止,我还没有得到一个比较好的解决方案.可能很简单,,只不过我不知道罢了.希望如此..
......
SQL分类:
DDL—数据定义语言(CREATE,ALTER,DROP,DECLARE)
DML—数据操纵语言(SELECT,DELETE,UPDATE,INSERT)
DCL—数据控制语言(GRANT,REVOKE,COMMIT,ROLLBACK)
首先,简要介绍基础语句:
1、说明:创建数据库
CREATE DATABASE database-name
2、说明:删除数据库
drop database db ......