报表sql心得一篇
最近很忙,有个项目马上要招标,一个项目等着工,若干琐碎的事进行中,有一段时间没更新些有营养的东西了
说个题外话先。
今天开机准备把昨天的东西debug一下,很习惯地右键项目的启动文件开始debug,机器突然蓝屏重启。开始以为又是内存在偷偷超频,检查了一下bios,发现没什么问题,也没怎么在意,隧重新开启vs2008继续debug。非常吃惊的发现debug程序的时候机器继续蓝屏,而且两次都是在debug刚启动,连浏览器都没打开的时候,这就有点意思了。
仔细回想一下刚才做的事情,比较引起我注意的是刚才点击了暴风影音的头条新闻看了一下,但是打开新闻的浏览器是ie(我的实际默认浏览器是360browser),会不会是这个地方造成debug启动默认浏览器错乱导致蓝屏?于是打开360browswer将其重新设置为默认ie浏览器,然后开始debug,问题解决。
这次教训告诉我们,出现问题后要仔细分析问题的周边因素,有时候一些细节问题导致的后果往往是很严重的,但是解决起来却很简单,重在发现。
----华丽的分割线----
进入正题。
这个星期光忙活做报表了,连着做了N个。做报表差不多快3年了,从reportservice2000,到2005,再到现在的2008(本人没有接触过crystal reports...),微软的报表工具是越来越牛X了,配合数据库的一些新特性和优化的性能,尽管报表趋于复杂化,但是等待时间还是在能够后接受的范围内,并且开发愈发灵活。
不过光靠工具和数据库本身是不够的,作为报表的灵魂----sql的性能直接决定报表的速度。总结一下报表sql的经验先:
1.确定你在sql引用到的表都是你需要的(很多人喜欢图方便,把之前成熟的sql直接拷贝来用,却没有根据当前需求的需要把不需要用到的表相关的sql去掉,平白增加的查询的复杂度)
2.确定使用jion去实现所有的表连接(事实证明inner jion是效率最高的,不过left join是使用的最频繁的,效率最烂的是笛卡尔积,除了一些特殊场合,笛卡尔积基本已经无视。文尾为会举一个用到笛卡尔积的例子,证明笛卡尔积还是个很优秀的算法思想)
3.如果在where中用到in (select xx from yy)类似的语法,要注意算法平衡:如果主对象很大而查询对象所在的表比较小时,这种做法相对效率较高(如果在查询的列上有index更好),如果主对象较小而查询对象所在表较大时,inner join是更好的选择
4.当一个结果集来自若干个表的运算时,如果有必要的话,可以先将较大的表计算出一个中间结果储存在表变量(本人比较喜欢表变量,事实上在单比查
相关文档:
经典SQL语句
1、说明:复制表(只复制结构,源表名:a 新表名:b) (Access可用)
法一:select * into b from a where 1<>1
//a必须是已经存在的表,但是b可以不存在,当b不存在时,系统会自己创建表b,该方法只会复制表的结构,而不会复制表的数据
法二:select top 0 * int ......
如何用SQL语言选择表中的第二条第三条第N条记录
--ID为唯一性就行了
select top 1 * from table
where ID not in(select top 1 ID from table)--第2条
select top 1 * from table
where ID not in(select top 2 ID from table)--第3条
......
一,
bcp命令详解
bcp命令是SQL Server提供的一个快捷的数据导入导出工具。使用它不需要启动任何图形管理工具就能以高效的方式导入导出数据。bcp是SQL Server中负责导入导出数据的一个命令行工具,它是基于DB-Library的,并且能以并行的方式高效地导入导出大批量的数据。bcp可以将数据库的表或视图直接导出 ......
(1) Connect to the Analysis server, select the database which we want it to be automatically processed. Right click on this database, choose ‘Process’:
(2) In the opening ‘Process database’ form, click the ‘Script Action ......
一、深入浅出理解索引结构
实际上,您可以把索引理解为一种特殊的目录。微软的sql server提供了两种索引:聚集索引(clustered index,也称聚类索引、簇集索引)和非聚集索引(nonclustered index,也称非聚类索引、非簇集索引)。下面,我们举例来说明一下聚集索引和非聚集索引的区别:
其实,我们的汉语字典的� ......