索引的使用(续2)
·1.2.5.定期整理索引碎片
–Dbcc indexdefrag
·DBCC INDEXDEFRAG (AdventureWorks, 'Production.Product', PK_Product_ProductID)
–DBCC DBREINDEX
·DBCC DBREINDEX ('HumanResources.Employee', PK_Employee_EmployeeID,80);
–DBCC SHOWCONTIG
·DBCC SHOWCONTIG ('HumanResources.Employee')
–sys.dm_db_index_physical_stats
–UPDATE STATISTICS
·UPDATE STATISTICS ON Production.Product WITH FULLSCAN, NORECOMPUTE
1.3
约束VS触发器·Check要优先于Trigger
·Check只能实现相对简单的业务规则
·Trigger可以实现几乎所有的业务规则(如数据维护条件的判断、流程自动化等)
·尽量使栏位不可为空(如所有数字栏位设置不可为空,默认值为0)
1.3.1
使用约束·在创建表时创建 CHECK 约束
–create table t_a(a int not null,constraint ck_t_a check(a > 0))
·在现有的表中创建 CHECK 约束
–alter table t_a add constraint ck_t_a check(a > 1)
·删除 CHECK 约束
–alter table t_a drop constraint ck_t_a
·禁用 CHECK 约束
–alter table t_a nocheck constraint ck_t_a
·启用 CHECK 约束
–alter table t_a check constraint ck_t_a
·修改 CHECK 约束
–先drop后add
1.4
栏位数据类型的选择·1.精确数字与近似数字
–精确数字:bigint、int、smallint、tinyint、bit、decimal、numeric、money、smallmoney
–近似数字:float、real
·2.数据类型优先级
–(1)用户定义数据类型(最高)
(2)sql_variant
(3)xml
(4)datetime
(5)smalldatetime
(6)float
(7)real
(8)decimal
(9)money
(10)smallmoney
(11)bigint
(12)int
(13)smallint
(14)tinyint
(15)bit
(16)ntext
(17)text
(18)image
(19)timestamp
(20)uniqueidentifier
(21)nvarchar
(22)nchar
(23)varchar
(24)char
(25)varbinary
(26)binary(最低)
·3.Unicode数据
–Nchar、nvarchar、ntext
·4.Sql 2005新增数据类型
–Nchar(max)、nvarchar(max)、varbinary(max)、char(max)、varchar(max)、xml
·5.text数据类型专用操作函数及限制
–READTEXT UPDATETEXT
·尽量使用更小的数据类型
–bit<tinyint<smallint<integer<bigint
·使用varchar代替image只保存图片路径
·如果栏位值只能为数字,使用数字类型要优于字符类型
·注意float等类型数据的比较
declare @x float,@y float
select @x = 1.0000000000000000000000000000000000000
select @y = 1
if @x = @y
print '='
else
print '< >'
迯剉penc揯
ghV@b(W;N:g剉噀鯪€
N/f`O袕L圫