1
wuliao8 OP 这个两种表的查询请问有什么高效的办法么? Mysql5.6
|
2
huixia0010 2016-08-03 09:18:08 +08:00 1
无索引- -主键呢,这种奇葩数据库,服
|
3
nightspirit 2016-08-03 09:20:54 +08:00 1
这是生产环境还是什么?应用场景是什么?
|
4
wuliao8 OP @nightspirit 只是本机运行,存储数据,更新数据
|
5
wuliao8 OP @huixia0010 无索引,也无主键, google 说有索引的 UPDATE 更慢
|
6
li24361 2016-08-03 09:55:49 +08:00 1
|
7
nightspirit 2016-08-03 10:27:02 +08:00
@wuliao8 有索引慢是因为,写入数据会构造索引,所以慢, SELECT ID,NAME,FILE,DIS FROM users GROUP BY(ID)这个子句这样写时用不到索引的,所以这个场景索引没啥用,你现在这个效率低也主要是这个子句,如果加索引可以加在 id 上,然后分步查询利用 id , id>某常数,这样循环更新表,不过你只是在本地的化,貌似也不需要什么效率问题,如果是生产环境,就可以考虑在本地做一部分,然后在上线时候,增量生产的那一部分,可以利用 read lock 。
|
8
y10n 2016-08-03 10:30:57 +08:00 1
A 表 主键加索引
B 表 普通索引 会不会好点? |
9
luluuulu4848 2016-08-03 10:38:25 +08:00 1
其实有时候拆开写能快点
表大的时候产生的笛卡尔积会很大 数据量如果很大的时候 SELECT ID,NAME,FILE,DIS FROM users GROUP BY(ID) 可以先查出来 然后 batchUpdate A 表 反而会快点 |
10
saintatgod 2016-08-03 11:21:33 +08:00
赞成 @luluuulu4848 的看法。
同时考虑加上索引,这个数据量,性能影响不大 |
11
wuliao8 OP @nightspirit 话说创建临时表更快些,还没实践。
现在这个语句 update4000 条都花了半个多小时,还没结束,不知道要多久 |
12
wuliao8 OP @luluuulu4848 初学 mysql , batchUpdate 是什么东东?
|
13
wander2008 2016-08-03 11:42:17 +08:00 via iPhone
explain 看一下 ok ?话说干嘛不让代码去跑
|
14
nightspirit 2016-08-03 13:57:21 +08:00
@wuliao8 没可能这么慢的,你是写的脚本更新的,还是直接执行的 sql 语句额?
|
15
luluuulu4848 2016-08-03 17:04:36 +08:00
@wuliao8 批量更新 一次提交事务
|
16
wuliao8 OP @nightspirit 直接执行的啊 sql 语句啊
|
17
dishuibaby 2016-08-03 17:54:24 +08:00
建议加上索引。 70W 的数据瞬间索引就加上了
|