易截截图软件、单文件、免安装、纯绿色、仅160KB

SQL 分页查询效率

用T-SQL做数据库分页查询也有好几年了,但对于各种查询方法的写法一至都没怎么去理会,最近参与了几个项目的开发,几个项目中分页查询的写法也不相同,这也让我产生了确认几种写法效率问题的兴趣。(注:我所说的几种写法都是需要返回总记录数的分页)
1、生成测试数据
select a.* into test from sys.columns a,sys.columns b
本机生成5564881行数据,相信也够多了吧。
主要说两种写法:
第一种:  分两个查询,先按查询条件查询出总记录数,再写一相同查询取出页数据;
第二种:将查询结果写入临时表,然后统计总记录数,再根据分页索引取出页数据; 
第一种写法SQL:
select count(*) from test where [name] like 'ActivityID' and max_length>1
 select * from(
 select a.[object_id],row_number() over(order by object_id) as rowIndex from test a
   where [name] = 'ActivityID' and max_length>1
 )t
 where rowIndex>100 and rowIndex<200
第二种写法SQL:
select a.[object_id],row_number() over(order by object_id) as rowIndex into #t from test a
  where [name] = 'ActivityID' and max_length>1
 
 select * from #t where rowIndex>100 and rowIndex<200
 select count(*) from #t
 drop table #t
测试结果:
当where 条件只有一个是,查询一性能优于查询二;但增加一条件后查询二性能优于查询一;
总结一下:
1、第一种写法优势在于I/O开销小于第二种写法,由其在满足条件返回数据越多的情况下性能越优;
2、第二种写法在查询条件复杂查询下性能优于第一种写法;
另外在使用Like 和=时一定要注意,=性能高于Like,在不使用通配符的情况下应使用=;(汗一个自己,以前习惯性的使用Like,这个习惯要好好的改一下了。)


相关文档:

SQL Server 2008 R2 应用及多服务器管理

     在激烈的市场竞争环境下,商人对市场环境的把握和决策直接关系到市场的趋势和机遇,对客户需求的快速相应能够占尽市场的先机。在当今社会的日常商务活动中,以往积累的相关商业数据能够为后续的业务活动提供良好的参考和向导。早在10余年前,商业智能(Business Intelligence,下称BI)厂商就已经 ......

将Excel的数据导入到SQL 2005现有的表中

我在将Excel的数据导入到SQL的时候老是出现下面的错误:
配置选项 'show advanced options' 已从 1 更改为 1。请运行 RECONFIGURE 语句进行安装。
配置选项 'Ad Hoc Distributed Queries' 已从 1 更改为 1。请运行 RECONFIGURE 语句进行安装。
消息 7399,级别 16,状态 1,第 1 行
链接服务器 "(null)" 的 OLE DB 访问 ......

书写SQL时也获得智能提示

写SQL的比写.NET程序的体验上差一等,没有智能提示,需要记住关键字,函数或者不断地Copy表字段名,自定义函数,存储过程之类的。不过在
VS2010中,我们可以使用智能提示了,如下面几幅图所示:

在编辑器中, 输入 Shift + J
(提示: VS2010 开发工具中标的是 Ctrl +J 其实应该是 Shift + J )就可以自动打开这个智 ......

SQL server子查询

exec xp_cmdshell 'md E:\project'
--先判断数据库是否存在如果存在就删除
if exists(select * from sysdatabases where name='bbsDB')
drop database bbsDB
--创建数据库文件
create database bbsDB
--主数据库文件
 on primary
(
 name='bbsDB_data',--为主要数据库文件命名
 filename='E:\proj ......

SQL数据类型

数据类型:
一、 整数数据类型
INT(INTEGER)        4
SMALLINT             2
TINYINT                 1
BIGINT    & ......
© 2009 ej38.com All Rights Reserved. 关于E健网联系我们 | 站点地图 | 赣ICP备09004571号