日度归档:2018年10月9日

MSSQL sqlserver 使用sql脚本为计算列创建索引的方法分享


摘要:
下文将分享使用sql脚本为计算列创建索引的方法及注意事项,如下所示:
实验环境:sql server 2008 R2


在sqlserver的表中,有些列是由非计算列组合而成的列,我们称这些列为计算列。
例:

/*创建表
表中keyIdC列为一个计算列由keyIdA和keyIdB相加而成
*/
create table test 
(keyIdA int ,
 keyIdB int,
 keyIdC as keyIdA+keyIdB
)
/*
当我们查询条件中包含keyIdC时,此时我们需要为计算列keyIdC创建一个索引来达到
快速检索数据的目的,如下:
*/
create Index test_x 
  on test(c)


计算列索引创建注意事项:
1.计算列中所涉及的函数须同表具有相同的所有者;
2.计算列须具有确定性:输入相同的参数无论何时都必须得到相同的结果;
3.计算列须返回确定的数据类型和相同精度要求;
4.定义计算列时,须将ANSI_NULLS选项设置为ON.

mssql sqlserver统计信息的重要性


摘要:
在sqlserver中,统计信息的功能为帮助数据库引擎预估出正确的执行计划,
缩短sql运行时间,使sql运行更高效,下文将记录一次sql统计信息导致的异常


前几天,编写了一个数据抽取脚本,前一段时间还运行正常,最近运行时间突然超出所有人的预估,整整耗时10个小时,
开始我们以为是硬件发生了变化,通过仔细询问多方了解发现硬件最近几天没有发生任何变化,我们又对最近几天数据的增加量进行了
检查,发现最近数据增加也是按照要求在正常运行,在所有外部环境都没有发生大变化时,此时sql脚本执行慢,只能界定为sql server数据引擎内部出现异常,

最后我们整个数据库的统计信息进行了全部更新,第二天数据统计脚本,只用了10分钟就生成完毕。

通过这次的事件,让我认识到了统计信息对数据库引擎的重要性,统计信息的异常,会导致数据库执行时使用错误的执行计划,
预估错误的执行时间,导致很多不必要的开销和内存占用的错误估算,严重者会导致sql引擎宕机。
记录此信息,以后遇到数据库查询慢,先分析统计信息是否正确。

mssql sqlserver not 关键字简介说明


摘要:
下文讲述sql查询脚本中not关键的用法



not关键字用法说明

not 关键字功能:
对表达式所产生的布尔值进行取反操作。
not 关键字语法:
[not] 布尔表达式
not 关键字返回值:
true false unknown

not关键字举例应用

 create table [maomao365.com]
(keyId int  identity ,
info varchar(88) null )
go
insert [maomao365.com] (info) values ('sqlserver教程')
insert [maomao365.com] (info) values ('sqlserver')
insert [maomao365.com] (info) values ('maomao365.com')
insert [maomao365.com] (info) values ('数据测试')
insert [maomao365.com] (info) values (null)
go
select * from [maomao365.com] 
where not keyId >2
go
select  * from [maomao365.com]
 where  not  info  is not null  
go 
truncate table [maomao365.com]
drop     table [maomao365.com]
mssql_sqlserver_not关键字

mssql_sqlserver_not关键字