易截截图软件、单文件、免安装、纯绿色、仅160KB
热门标签: c c# c++ asp asp.net linux php jsp java vb Python Ruby mysql sql access Sqlite sqlserver delphi javascript Oracle ajax wap mssql html css flash flex dreamweaver xml
 最新文章 : sqlserver

SQLServer 聚集索引优化方案

一、主键与聚集索引并不是一对一匹配的
一般情况下我们都认为,聚集索引和主键是相互匹配的,因为只要你在SQLServer表中定义了一个主键,那么SQLServer会为这个主键自动添加聚集索引.但是,如果你先在表中基于任意一列建立聚集索引,然后再选择另一列作为主键,这时,这个SQLServer将会基于这个主键建立一个唯一非聚集索引.
二、聚集索引会被应用到每个查询中
一个SQLServer表内,最多只能有一个聚集索引,并且表中数据行存储的位置由聚集索引来决定.表中非聚集索引与数据行的映射,是通过聚集索引来定位的.当聚集索引执行插入操作时,数据表中的行要进行移动,同时该表中所有非聚集索引要重新排列,这是非常消耗资源并且影响SQLServer响应速度的.
所以SQLServer表中的聚集索引一定要避免新添加数据时执行插入操作,保证表中新添加的数据是从索引的尾部追加的.这样做可以保证聚集索引相对静态,对非聚集索引的影响也会减小.
创建聚集索引时,要选择那些数据会不断增加的字段,最好的例子就是bbs发帖表中,帖子发布时间,这个字段中的数据是随时间增长的,理论上讲是不会重复的,最适合建立聚集索引.
如果你的聚集索引真的做到了不断增加,那么它的填充因子就应该是100%,这个数值越高,每个8KB大 ......

SQLServer 优化SQL语句:in 和not in的替代方案


原文出处:http://www.cnblogs.com/luoht/archive/2010/03/01/1676049.html
用IN写出来的SQL的优点是比较容易写及清晰易懂,这比较适合现代软件开发的风格。
  但是用IN的SQL性能总是比较低的,从SQL执行的步骤来分析用IN的SQL与不用IN的SQL有以下区别:
  SQL试图将其转换成多个表的连接,如果转换不成功则先执行IN里面的子查询,再查询外层的表记录,如果转换成功则直接采用多个表的连接方式查询。由此可见用IN的SQL至少多了一个转换的过程。一般的SQL都可以转换成功,但对于含有分组统计等方面的SQL就不能转换了。 推荐在业务密集的SQL当中尽量不采用IN操作符
  NOT IN 此操作是强列推荐不使用的,因为它不能应用表的索引。推荐用NOT EXISTS 或(外连接+判断为空)方案代替
  在数据库中有两个表,一个是当前表Info(id,PName,remark,impdate,upstate),一个是备份数据表bakInfo(id,PName,remark,impdate,upstate),将当前表数据备份到备份表去,就涉及到not in 和in 操作了:
  首先,添加10万条测试数据
  使用not in 和in操作:
 
        SET STATISTICS TIME ON 
  GO  ......

SQLServer 优化SQL语句:in 和not in的替代方案


原文出处:http://www.cnblogs.com/luoht/archive/2010/03/01/1676049.html
用IN写出来的SQL的优点是比较容易写及清晰易懂,这比较适合现代软件开发的风格。
  但是用IN的SQL性能总是比较低的,从SQL执行的步骤来分析用IN的SQL与不用IN的SQL有以下区别:
  SQL试图将其转换成多个表的连接,如果转换不成功则先执行IN里面的子查询,再查询外层的表记录,如果转换成功则直接采用多个表的连接方式查询。由此可见用IN的SQL至少多了一个转换的过程。一般的SQL都可以转换成功,但对于含有分组统计等方面的SQL就不能转换了。 推荐在业务密集的SQL当中尽量不采用IN操作符
  NOT IN 此操作是强列推荐不使用的,因为它不能应用表的索引。推荐用NOT EXISTS 或(外连接+判断为空)方案代替
  在数据库中有两个表,一个是当前表Info(id,PName,remark,impdate,upstate),一个是备份数据表bakInfo(id,PName,remark,impdate,upstate),将当前表数据备份到备份表去,就涉及到not in 和in 操作了:
  首先,添加10万条测试数据
  使用not in 和in操作:
 
        SET STATISTICS TIME ON 
  GO  ......

SQLServer和Oracle的常用函数对比

1.绝对值 
S:select abs(-1) value
O:select abs(-1)  value from dual
2.取整(大) 
S:select ceiling(-1.001) value  
O:select ceil(-1.001)  value from dual
3.取整(小) 
S:select floor(-1.001) value  
O:select floor(-1.001)  value from dual
4.取整(截取)
S:select cast(-1.002 as int)  value  
O:select trunc(-1.002) value from dual 
5.四舍五入
S:select round(1.23456,4) value    1.23460
O:select round(1.23456,4) value from dual 1.2346
6.e为底的幂 
S:select Exp(1) value      2.7182818284590451   
O:select Exp(1) value from dual   2.71828182
7.取e为底的对数
S:select log(2.7182818284590451) value     1
O:select ln(2.7182818284590451) value from dual;  1
8.取10为底对数
S:select log10(10) value       1
O:select log(10,10) value from dual;    1
9.取平方
S:select SQUARE(4) value&nb ......

SQLServer和Oracle的常用函数对比

1.绝对值 
S:select abs(-1) value
O:select abs(-1)  value from dual
2.取整(大) 
S:select ceiling(-1.001) value  
O:select ceil(-1.001)  value from dual
3.取整(小) 
S:select floor(-1.001) value  
O:select floor(-1.001)  value from dual
4.取整(截取)
S:select cast(-1.002 as int)  value  
O:select trunc(-1.002) value from dual 
5.四舍五入
S:select round(1.23456,4) value    1.23460
O:select round(1.23456,4) value from dual 1.2346
6.e为底的幂 
S:select Exp(1) value      2.7182818284590451   
O:select Exp(1) value from dual   2.71828182
7.取e为底的对数
S:select log(2.7182818284590451) value     1
O:select ln(2.7182818284590451) value from dual;  1
8.取10为底对数
S:select log10(10) value       1
O:select log(10,10) value from dual;    1
9.取平方
S:select SQUARE(4) value&nb ......

sqlserver 基础知识大整理

                              SQL-Structured Query Language
--(开启SQL服务:net start mssqlserver)
--(在命令行中输入'sqlwb'命令可打开SQL管理器 )
--(如果要执行多条命令中的一条,鼠标选定后再按F5执行)
create database sales                           --创建一个名为sales的数据库
on
(
name='sales_data',
filename='d:\sales_data.mdf',
size=10,
maxsize=50,
filegrowth=5
)
log on
(
name='sales_log',
filename='d:\sales_log.ldf',
size=10,
maxsize=50,
filegrowth=5
)
drop database sales                             --删除所创建的数据库
sp_helpdb sales     ......

sqlserver 基础知识大整理

--(开启SQL服务:net start mssqlserver)
--(在命令行中输入'sqlwb'命令可打开SQL管理器 )
--(如果要执行多条命令中的一条,鼠标选定后再按F5执行)
create database sales                           --创建一个名为sales的数据库
on
(
name='sales_data',
filename='d:\sales_data.mdf',
size=10,
maxsize=50,
filegrowth=5
)
log on
(
name='sales_log',
filename='d:\sales_log.ldf',
size=10,
maxsize=50,
filegrowth=5
)
drop database sales                             --删除所创建的数据库
sp_helpdb sales                                 --查看数据库的相关信息
sp_helpfile& ......

sqlserver分页

现在一般常用的有以下2种方法:
1. select top @pagesize * from table1 where id not in  (select top @pagesize*(@page-1) id  from table1 order by id) order by id
2. select *  from (select top @pagesize * from (select top @pagesize*@page * from table1 order by id) a order by id desc) b order by id ......
总记录数:341; 总页数:57; 每页6 条; 首页 上一页 [14] [15] [16] [17] 18 [19] [20] [21] [22] [23]  下一页 尾页
© 2009 ej38.com All Rights Reserved. 关于E健网联系我们 | 站点地图 | 赣ICP备09004571号