再见西城 发表于 2015-1-16 22:42:52

MSSQL网站制作之sqlServer中 分类报表sql技能 ,很有用...

出于效率方面的考虑,InnoDB数据表的数据行级锁定实际发生在它们的索引上,而不是数据表自身上。显然,数据行级锁定机制只有在有关的数据表有一个合适的索引可供锁定的时候才能发挥效力。server|sqlserver|技能
有表tableA以下:-----------------------------------------------------id,type,countNumber,countDate1A102005-02-0121:23:342B82005-02-0121:23:343C52005-02-0121:23:344B42005-02-0111:23:345C52005-02-0122:23:346A112005-02-0212:23:347B92005-02-0214:23:348C82005-02-0217:23:349A152005-02-0219:23:3410C62005-02-0204:23:3411A72005-02-031:23:3412B112005-02-032:23:3413C122005-02-035:23:34.......................

想要用一条语句天生以下的报表

日期范例A范例B范例C2005-02-011012102005-02-02269142005-02-0371112

我用的是以下的sql语句:

SELECTa.DATEFMT,(selectsum(*)fromtableAwheretype=Aandconvert(char(10),countDate,20)=a.DATEFMT)typeA,(selectsum(*)fromtableAwheretype=Bandconvert(char(10),countDate,20)=a.DATEFMT)typeB,(selectsum(*)fromtableAwheretype=Candconvert(char(10),countDate,20)=a.DATEFMT)typeC

FROM(SELECTconvert(char(10),countDate,20)DATEFMTFROMtableAGROUPBYconvert(char(10),countDate,20))a

可是这条语句在sqlserver上实行起来出格的慢,要好久(20多秒),tabelA中有9万条数据.而我在mySql(表中有2万条数据)上实行就快良多!

厥后在论坛上看到妙手如许写

selectconvert(char(10),countDate,20),typeA=sum(casetypewhenAthenCountNumberelse0end),typeB=sum(casetypewhenBthenCountNumberelse0end),typeC=sum(casetypewhenCthenCountNumberelse0end)FromtableAgroupbyconvert(char(10),countDate,20)

只用1秒不到!唉!凶猛凶猛!
因此我们看到,这些信息足够让我们对单个操作实现“逆操作”。

仓酷云 发表于 2015-1-18 06:45:16

一直以来个人感觉SQLServer的优化器要比Oracle的聪明。SQL2005的更是比2k聪明了不少。(有次作试验发现有的语句在200万级时还比50万级的相同语句要快show_text的一些提示没有找到解释。一直在奇怪。)

变相怪杰 发表于 2015-1-21 11:55:35

varchar(max)\\\\nvarchar(max)类型的引入大大的提高了编程的效率,可以使用字符串函数对CLOB类型进行操作,这是一个亮点。

透明 发表于 2015-1-30 17:38:54

你觉得我的非分区索引无法对起子分区,你可以提醒我一下呀!没有任何的提醒,直接就变成了非分区表。不知道这算不算一个bug。大家也可以试试。

简单生活 发表于 2015-2-6 14:34:18

一个百万级别的基本信息表A,一个百万级别的详细记录表B,A中有个身份证id,B中也有身份id;先要找出A中在B的详细记录。

因胸联盟 发表于 2015-2-16 13:57:49

你可以简单地认为适合的就是好,不适合就是不好。

第二个灵魂 发表于 2015-3-5 06:33:42

你觉得我的非分区索引无法对起子分区,你可以提醒我一下呀!没有任何的提醒,直接就变成了非分区表。不知道这算不算一个bug。大家也可以试试。

admin 发表于 2015-3-11 23:39:13

having子句的作用是筛选满足条件的组,即在分组之后过滤数据,条件中经常包含聚组函数,使用having条件显示特定的组,也可以使用多个分组标准进行分组。

深爱那片海 发表于 2015-3-19 16:25:12

多走走一此相关论坛,多看一些实例开发,多交流0经验,没什么的,我也是刚学没多久!加油

若天明 发表于 2015-3-29 07:19:14

我是新手,正在学习数据库和操作系统,深感理论的泛广,唯有一步一步来,但是又感觉时间不够,收集了很多资料却总是没能认真的看完,希望有一个讨论板块,大家共同解决,共同分享,共同努力
页: [1]
查看完整版本: MSSQL网站制作之sqlServer中 分类报表sql技能 ,很有用...