SQLServer 最常用的索引字段(通用索引字段)
一、SQLServer 通用索引字段
1、Primary Key's 主键
2、Foreign Key's 外键
3、支持SELECT、INSERT、UPDATE和DELETE命令的字段 :
(1)、INNER JOIN
(2)、RIGHT | LEFT OUTER JOIN
(3)、WHERE
(4)、ORDER BY
(5)、GROUP BY
(6)、HAVING
二、创建索引的其他因素(主要因素都因为索引是数据表外部独立的组织,当表中的数据发生变化时,索引也需要同步维护,这将影响数据表的更新操作的效率):
1、数据量——如果记录行数很少,不必建立索引就能快速访问
2、数据变动频率——如果表中的数据变动频繁(INSERT、UPDATE和DELETE操作)每次变动,索引都要增加维护的开销,我们建立索引应该考虑到数据变动的趋势,例如:bbs中的发帖,这张表的新数据是按照创建时间排列的,所以按照创建时间建立的索引,在添加新数据时,维护索引的开销是最低的
3、尽量创建瘦索引——如果你不能确定索引数量,那么就每个索引用一个字段就好了,除非频繁的对某一组字段进行查询,否则没有必要建立胖索引
相关文档:
在用Asp.net对备份的数据库文件进行还原的时候,有时候会出现下面的错误异常:
[因为数据库正在使用,所以未能获得对数据库的排它访问权。 RESTORE DATABASE 操作异常终止。已将数据库上下文改为 'master'。]
这个时候,自由等待其他进程释放对应权限后,才可还原成功!有没有解决办法呢?我参照【Java】对这个问题的解决 ......
临近年终,在工作之余对工作和学习中遇到的问题以及常用的一些知识点做了些整理,以备后用。本文涉及的内容为数据库,算是对开发总结(1)---数据库一文的补充。
1 对于主键设置了Identity的表,在删除表中数据后再往表中插入数据,Identity列不是从1起始了,如果想删除数据后Indentity列仍从1起始,可以用下面代码来删除数据 ......
SQLServer中的循环批处理
GO命令后面加一个常量就可以了
下面方法可以用来快速生成一批数据
if (object_id ('t' ) is not null ) drop table t
go
create table t (id int identity (1 , 1 ), name varchar (40 ))
go
insert into t (name ) select newid ()
go 10
select * from t
/*
1 &nbs ......
SQLSERVER--一些经典问题总结
2007-04-01 01:04:06
大中小
/**********************************/
--获得某一天所在年的第一天
declare @a datetime,@b datetime,@sum int,@num int,@res varchar(20)
select @a='1-6-1968'
select @b='2006-4-8'
select @sum=year(@a)
select @res=ltrim(cast(@sum as ......
--每个月的第一天
select dateadd(dd,-datepart(dd,getdate())+1,getdate())
--第个月的最后一天
select dateadd(dd,-datepart(dd,getdate()),dateadd(mm,1,getdate()))
--本月的天数
select datediff(dd,getdate(),dateadd(mm,1,getdate()))
......