02 2011 档案
可遇不可求的Question之MYSQL获取自增ID的四种方法篇
摘要:1. select max(id) from tablename2.SELECT LAST_INSERT_ID() 函数LAST_INSERT_ID 是与table无关的,如果向表a插入数据后,再向表b插入数据,LAST_INSERT_ID会改变。在多用户交替插入数据的情况下max(id)显然不能用。这时就该使用LAST_INSERT_ID了,因为LAST_INSERT_ID是基于Connection的,只要每个线程都使用独立的 Connection对象,LAST_INSERT_ID函数将返回该Connection对AUTO_INCREMENT列最新的insert or update 操作生成 阅读全文
posted @ 2011-02-24 16:39 林石 阅读(512) 评论(0) 推荐(0)
可遇不可求的Question之SQLLite操作百万级数据的优化篇
摘要:描述:SQLite数据库本质上来讲就是一个磁盘上的文件,所以一切的数据库操作其实都会转化为对文件的操作,而频繁的文件操作将会是一个很耗时的过程,会极大地影响数据库存取的速度。例如:向数据库中插入100万条数据,在默认的情况下执行相应的操作,就会打开和关闭文件100万次,所以速度当然会很慢。分析:在入库和更新过程中按照数据库事务的思想进行设计:SQLite执行入库、更新操作的方式是,语句执行对象句柄调用库函数打开文件、调用函数执行sql语句、关闭文件。这样的执行方式对于数量级别超大的文件的弊端就是每次执行sql语句的时候都要打开文件(假设百万级数量级的数据,就要打开和关闭文件百万次),对于数据库 阅读全文
posted @ 2011-02-24 16:36 林石 阅读(2004) 评论(0) 推荐(0)
可遇不可求的Question之MYSQL4.1版本之前不支持子查询的解决方案篇
摘要:描述:在MYSQL4.1版本之前的MYSQL数据库语法中,很悲剧的不支持子查询.所以,对于相对复杂一些的语句,一般通过拆分SQL语句为简单语句,也可以实现相关业务.但是考虑逻辑处理,处理复杂度等原因,希望能够找到一种替代方案.解决:可以通过使用left join inner jion right jion 左右内联连接来达到子查询对应的效果.在其他数据库中相应SQL语法也可以适用.考虑到数据库移植的问题,这种方案比较具有通用性.示例:采用子查询语句:Code highlighting produced by Actipro CodeHighlighter (freeware)http://ww 阅读全文
posted @ 2011-02-21 12:43 林石 阅读(234) 评论(0) 推荐(0)