|
马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要 登录 才可以下载或查看,没有帐号?立即注册
x
出于效率方面的考虑,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秒不到!唉!凶猛凶猛!
因此我们看到,这些信息足够让我们对单个操作实现“逆操作”。 |
|