这样是否必须要用存储过程?

aj3423 2008-12-09 08:28:49
SELECT SQL_CALC_FOUND_ROWS * from my_table WHERE ID > 1000 LIMIT 5000;
SELECT FOUND_ROWS();
以上用来是获得总记录条数和满足条件记录,但如果同时可能有很多用户查找的话,会不会造成这种情况?

A,B两个用户同时来查找,A执行到
SELECT SQL_CALC_FOUND_ROWS * from my_table WHERE ID > 1000 LIMIT 5000;
之后,此时B也来查找
问题1:这时候A的SELECT FOUND_ROWS()是不是会返回B的结果呢?
我看到有存储过程这个东西,能不能用来解决这个问题?
问题2:这个存储过程应该怎么写呢?

谢谢。


...全文
47 点赞 收藏 5
写回复
5 条回复
切换为时间正序
当前发帖距今超过3年,不再开放新的回复
发表回复
Zijian_Zhang 2008-12-09
[Quote=引用 4 楼 gingzai777 的回复:]
如果查询的结果一样,可以不用事务,用事务减慢数据库处理速度。
[/Quote]再详细一些,因为查询的结果一样,就算出现差错,都是一样的,呵呵呵
回复
Zijian_Zhang 2008-12-09
如果查询的结果一样,可以不用事务,用事务减慢数据库处理速度。
顺便提示一下:还有,如果服务器负载很重,你可以建一个内存数据库或者一个缓存数据库。
回复
aj3423 2008-12-09
多谢! 这样的话又有新问题了。
问题3:但如果我的表是不会改变的,只是用来查询用,是不是就不用事务操作了呢?
问题4:
SELECT SQL_CALC_FOUND_ROWS * from my_table WHERE ID > 1000 LIMIT 5000;
SELECT FOUND_ROWS();
这样的话web服务器和数据库服务器之间有2次交互吧,我的web服务器和数据库服务器不是同一个机器,中间网络比较差。。能不能一次交互得到这2个结果呢?
回复
iasky 2008-12-09
事务操作!
回复
Zijian_Zhang 2008-12-09
应该不会的,就如同多个人访问同一个PHP那样,但是,数据库的这种错误还是有可能的,只是微乎其微(你的网站访问率一般的情况下),你可以这样写的,搞个事务处理,就是执行SQL语句“COMMIT”那些,自己到Google查一下,很多的,关键字:MySQL事务处理
回复
相关推荐
发帖
基础编程
创建于2007-09-28

2.1w+

社区成员

从PHP安装配置,PHP入门,PHP基础到PHP应用
申请成为版主
帖子事件
创建了帖子
2008-12-09 08:28
社区公告
暂无公告