Sql语句学习
一、
select playerId, count(playerId) as num from OperateLog_$i where playerId > 0 and rootId = 12 and typeId = 12156 and actionTime >= 1381509000000 and actionTime <= 1381511220000 group by playerId having count(*) > 2;
this-- > 可以计算出多条记录的记录数
this --> 可以计算出拥有多条记录的playerId
星期二,2014年1月14日
SQL,where 1 = 1 和 1 = 0 的妙用
where 1 = 1 :
为了给有些不确定是否可以添加where语句的加上保障
where 1 = 0 :
主要用于创建一个新表,而新表的结构与查询的表的结构是一样的。如下SQL语句:
create table newtable as select * from oldtable where 1=0;
SQL语句添加 if 语句:、
select * from ConfigGoods where 1=1 #if(type > 0){ type = 4};
SQL 日期增减
select * from table where date < DATE_ADD(now(), INTERVAL -7 DAY);
星期一,2014年5月5日
MySQL 的表结构-----InnoDB 和 MyISAM
1. InnoDB 不支持 FULLTEXT 的索引建立
2. InnoDB 删除表的时候不会建新表,而是一行一行地删除
3. InnoDB 的行锁不是绝对的,在不确定的时候(where xx like ‘%xx‘)会锁住整个表
4. 建立良好的索引后,InnoDB 的速度可以比MyISAM快
5. InnoDB 不会保存行数,执行 count(*) 语句时,InnoDB需要扫描整个表计算行数,MyISAM只需要读取行数,但是添加 where 条件后,两者速度一样
注意: 设置 innodb_flush_log_at_trx_commit 为 1 的话,每次插入都会自动提交(刷新日志),性能会急剧下降,应该设定为 0
总结 :InnoDB自身很多良好的特点,比如事务支持、存储过程、视图、行级锁定等等,在并发很多的情况下,相信InnoDB的表现肯定要比MyISAM强很多
星期二,2014年5月13日
MYSQL 转换时间函数
FROM_UNIXTIME(eventTime, ‘%Y-%m-%d %H:%m:%s‘)