mysql update时快时慢怎么回事

zlw88888 2018-07-18 09:59:41
update b set count = (b.count - 1), update_time = now() where b.pl_code = xx and b.s_date = 'xxxx-xx-xx' and b.start_time <= 'xx:xx:xx' and b.end_time > 'xx:xx:xx';

只有唯一主键 那么这条语句怎么优化呀,请求大神不吝赐教, 歇息
...全文
366 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
卖水果的net 2018-07-18
  • 打赏
  • 举报
回复
1、检索时间过长,按 2# 版主提供的方法加个索引。
2、慢的时候,估计是你这行记录其他会话锁定了,你在等待。
吉普赛的歌 2018-07-18
  • 打赏
  • 举报
回复
CREATE INDEX ix_b_p1_code_s_date_start_time_end_time
ON b (p1_code,s_date,start_time,end_time)
丰云 2018-07-18
  • 打赏
  • 举报
回复
1. 作为一个单表update语句,字段前面的tb.这个前缀要么都带上,要么都不要带,一些有,一些没有,是几个意思撒????

2. 本语句时快时慢,应该是由start_time这个区间检索为主因,另外两个字段的条件检索为辅因, 没有语法上的优化余地。

硬要优化,建议加索引吧
zlw88888 2018-07-18
  • 打赏
  • 举报
回复
好的 谢谢各位了

22,206

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server 疑难问题
社区管理员
  • 疑难问题社区
  • 尘觉
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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