尽量避免在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
相关文档:
/********************************
功能:获取表的空间分布情况
**********************************/
if not exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[tablespaceinfo]') and OBJECTPROPERTY(id, N'IsUserTable') = 1)
create table tablespaceinfo   ......
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 ......
数据库备份实例/**
**数据库备份实例
**朱二 2004年5月
**备份策略:
**数据库名:test
**备份文件的路径e:\backup
**每个星期天凌晨1点做一次完全备份,为保险起见,备份到两个同样的完全备份文件test_full_A.bak和test_full_B.bak
**每天1点(除了星期天)做一次差异备份,分别备份到两个文件test_df_A.bak和test_df ......
获取SQL Server的当前连接数
[转]http://www.cnblogs.com/confach/archive/2006/05/31/414156.html
首先声明:这个问题我没有解决
当网友问到我这个问题时,我也还以为很简单,以为SQL Server应该提供了对应的系统变量什么的.但是到目前为止,我还没有得到一个比较好的解决方案.可能很简单,,只不过我不知道罢了.希望如此..
......
DECLARE
TYPE list IS TABLE OF t_stu.project%TYPE INDEX BY BINARY_INTEGER;
project_list list;
v_pro_num NUMBER;
sql_str VARCHAR(255);
t_stu
SID SUBJECT SCORE
1 数学 &n ......