Mysql 分页技术总结
Mysql Pagination
1. 使用cursor方式进行数据分页。
http://timyang.net/web/pagination/
对于大结果集的数据,使用cursor方式的目的主要是为了极大地提高性能。还是拿MySQL为例说明,比如翻页到100,000条时,不用cursor,对应的SQL为
select * from msgs limit 100000, 100
需要查询100000+100条数据,然后丢弃100000条,保留100条。
在一个百万记录的表上,第一次执行这条SQL需要5秒以上。
假定我们使用表的主键的值作为cursor_id, 使用cursor分页方式对应的SQL可以优化为
select * from msgs where id > cursor_id limit 100;
同样的表中,通常只需要100ms以下, 效率会提高几十倍。
不可以使用limit M, N
但可以使用limit N,而使用而外的clue(线索、条件),来实现从M开始的功能。
2.几位yahoo工程师的mysql分页技术的总结:很不错
http://www.percona.com/ppc2009/PPC2009_mysql_pagination.pdf
http://www.fuchaoqun.com/2009/04/efficient-pagination-using-mysql/
相关文档:
第一招、mysql服务的启动和停止
net stop mysql
net start mysql
第二招、登陆mysql
语法如下: mysql -u用户名 -p用户密码
键入命令mysql -uroot -p, 回车后提示你输入密码,输入12345,然后回车即可进入到mysql中了,mysql的提示符是:
mysql>
注意,如果是连接到另外的机器上,则需要加入一个参数-h机 ......
做项目时由于业务逻辑的需要,必须对数据表的一行或多行加入行锁,举个最简单的例子,图书借阅系统。假设 id=1 的这本书库存为 1 ,但是有 2 个人同时来借这本书,此处的逻辑为 :
Select restnum from book where id =1 ;
-- 如果 restnum 大于 0 ,执行 update
Update boo ......
The vs2008 and vs2010 don't support the generation LINQ to SQL business objects from a MySQL database, if you drop a MySql table to a Linq to Sql Class, it will popup a "The selected object(s) use an unsupported data provider" error.
Generation tool DBLinq
DbLinq is a LINQ to SQL data co ......
在工作中碰到一个Mysql字段更新问题
在custom表中有一个tariffurl的值中有如下情况:
uploadfiles ariff2007031172720306698.jpg以及uploadfiles ariff2007031172720306690.jpg;uploadfiles ariff2007031172720306691.jpg形式
要更改成uploadfiles/tariff/200703/1172720306698.jpg及 uploadfiles/tariff/200703/11727 ......
在近期的项目维护工作中,时常出现主键重复的异常。经过一系列资料的查询之后,发现时hibernate映射文件配置问题。
mysql提供主键“自动增量”的配置,指定该类型的主键,mysql能够自动加一。
在hibernate映射文件中,关于主键的配置不能是