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

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:这个存储过程应该怎么写呢?

谢谢。


...全文
80 5 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
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事务处理

21,893

社区成员

发帖
与我相关
我的任务
社区描述
从PHP安装配置,PHP入门,PHP基础到PHP应用
社区管理员
  • 基础编程社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧