MYSQL 更新表时间太长

tonybao 2017-04-20 03:12:47
[SQL] update mis_sales_collection msc, mis_gen_customers gc set msc.sales_id = gc.sales_id where msc.customer_num = gc.customer_num and msc.received_year = 2017

Affected rows: 22
Time: 428.431ms

以上显示用了428.431ms,就是半秒钟都不到,可我在页面/NaviCat端上等了10分钟都不止。

mis_sales_collection表一共有67796条记录, MyISAM表
mis_gen_customers表一共有3283条记录,MyISAM表

大神们看看大概是什么问题吧,谢谢谢谢!
...全文
493 20 打赏 收藏 转发到动态 举报
写回复
用AI写文章
20 条回复
切换为时间正序
请发表友善的回复…
发表回复
tonybao 2017-05-09
  • 打赏
  • 举报
回复
谢谢大家, 就是索引的问题。
fcy_n 2017-04-28
  • 打赏
  • 举报
回复
引用 14 楼 tonybao 的回复:
大家帮我看看呢。。。 其实是这样的,那天我就要explain一下了,可是一直出不来结果,今天一下就好了。 感觉是服务器的问题,用得人多了,就慢得很,不会配置啊。。。
明显没索引
c_sdn_shang_bu_qi 2017-04-28
  • 打赏
  • 举报
回复
两表关联更新,在关联字段上建索引
zjcxc 2017-04-27
  • 打赏
  • 举报
回复
你可以建 innodb 的表,把数据导过去做测试验证
tonybao 2017-04-27
  • 打赏
  • 举报
回复
引用 15 楼 zjcxc 的回复:
半秒不到的更新是在哪里做到的? 在NaviCat 8 for mysql 中看到的。 另外,myisam 表的锁严重,如果是时快时慢,改用 innodb 看看
现在表里的数据都是真实有效的,如果改表的类型为innodb的话,一定不会有问题吧,表不会坏了,不会丢数据吧。。。
zjcxc 2017-04-27
  • 打赏
  • 举报
回复
半秒不到的更新是在哪里做到的? 另外,myisam 表的锁严重,如果是时快时慢,改用 innodb 看看
tonybao 2017-04-27
  • 打赏
  • 举报
回复


大家帮我看看呢。。。

其实是这样的,那天我就要explain一下了,可是一直出不来结果,今天一下就好了。 感觉是服务器的问题,用得人多了,就慢得很,不会配置啊。。。
small虾米 2017-04-21
  • 打赏
  • 举报
回复
explain SELECT * FROM mis_sales_collection msc , mis_gen_customers gc WHERE msc.customer_num = gc.customer_num AND msc.received_year = 2017 给截个图看下
small虾米 2017-04-21
  • 打赏
  • 举报
回复
explain 分析下,看是否缺少索引,性能问题应该都是先去用函数分析下吧
二月十六 2017-04-21
  • 打赏
  • 举报
回复
引用 9 楼 tonybao 的回复:
[quote=引用 8 楼 sinat_28984567 的回复:] [quote=引用 7 楼 tonybao 的回复:] [quote=引用 5 楼 sinat_28984567 的回复:] 关联读取时间太长了?两个关联select一下试试呢
两个关联select一下试试呢 这个怎么做啊,你指导一下吧,谢谢![/quote]
SELECT  *
FROM    mis_sales_collection msc ,
        mis_gen_customers gc
WHERE   msc.customer_num = gc.customer_num
        AND msc.received_year = 2017
[/quote] 用了3分半钟。[/quote] 是一个表的数量大一个表的数据量小吗?
tonybao 2017-04-21
  • 打赏
  • 举报
回复
引用 8 楼 sinat_28984567 的回复:
[quote=引用 7 楼 tonybao 的回复:]
[quote=引用 5 楼 sinat_28984567 的回复:]
关联读取时间太长了?两个关联select一下试试呢


两个关联select一下试试呢 这个怎么做啊,你指导一下吧,谢谢![/quote]
SELECT  *
FROM mis_sales_collection msc ,
mis_gen_customers gc
WHERE msc.customer_num = gc.customer_num
AND msc.received_year = 2017
[/quote]


用了3分半钟。
二月十六 2017-04-21
  • 打赏
  • 举报
回复
引用 7 楼 tonybao 的回复:
[quote=引用 5 楼 sinat_28984567 的回复:] 关联读取时间太长了?两个关联select一下试试呢
两个关联select一下试试呢 这个怎么做啊,你指导一下吧,谢谢![/quote]
SELECT  *
FROM    mis_sales_collection msc ,
        mis_gen_customers gc
WHERE   msc.customer_num = gc.customer_num
        AND msc.received_year = 2017
tonybao 2017-04-21
  • 打赏
  • 举报
回复
引用 5 楼 sinat_28984567 的回复:
关联读取时间太长了?两个关联select一下试试呢
两个关联select一下试试呢 这个怎么做啊,你指导一下吧,谢谢!
tonybao 2017-04-21
  • 打赏
  • 举报
回复
引用 4 楼 lbb_317725004 的回复:
你这半秒从哪里得到的数据
Affected rows: 22 Time: 428.431ms 428.431毫秒(ms)=0.428431秒(s)
lbb_317725004 2017-04-21
  • 打赏
  • 举报
回复
引用 10 楼 sinat_28984567 的回复:
[quote=引用 9 楼 tonybao 的回复:] [quote=引用 8 楼 sinat_28984567 的回复:] [quote=引用 7 楼 tonybao 的回复:] [quote=引用 5 楼 sinat_28984567 的回复:] 关联读取时间太长了?两个关联select一下试试呢
两个关联select一下试试呢 这个怎么做啊,你指导一下吧,谢谢![/quote]
SELECT  *
FROM    mis_sales_collection msc ,
        mis_gen_customers gc
WHERE   msc.customer_num = gc.customer_num
        AND msc.received_year = 2017
[/quote] 用了3分半钟。[/quote] 是一个表的数量大一个表的数据量小吗?[/quote] explain看一下。。应该没有走索引,或者索引不理想
二月十六 2017-04-20
  • 打赏
  • 举报
回复
关联读取时间太长了?两个关联select一下试试呢
lbb_317725004 2017-04-20
  • 打赏
  • 举报
回复
你这半秒从哪里得到的数据
tonybao 2017-04-20
  • 打赏
  • 举报
回复
大神看看,能给个思路,大概是什么方面的问题么??
tonybao 2017-04-20
  • 打赏
  • 举报
回复


用控制台运行同样的命令一样很耗时,而且这次的耗时显示是正确的7分钟多点。。。

二月十六 2017-04-20
  • 打赏
  • 举报
回复
用控制台执行呢?

56,679

社区成员

发帖
与我相关
我的任务
社区描述
MySQL相关内容讨论专区
社区管理员
  • MySQL
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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