我有 2 个表,每个表有一亿行,key1 和 str_key 都是非唯一键。以下 MYSQL 查询,根据显示引擎 innodb 状态,正在执行大约 80 次读取/秒,还没有更新。没有其他查询正在运行。
更新 table_r r, table_w w 设置 r.key1=0 其中 r.str_key=w.str_key
- 查询需要 1 亿 / 60 > 100 万秒才能完成,这是否正确?
- 如何优化查询以快速完成?
我有 2 个表,每个表有一亿行,key1 和 str_key 都是非唯一键。以下 MYSQL 查询,根据显示引擎 innodb 状态,正在执行大约 80 次读取/秒,还没有更新。没有其他查询正在运行。
更新 table_r r, table_w w 设置 r.key1=0 其中 r.str_key=w.str_key
您必须在表中索引 WHERE 子句字段,并且您应该对表进行分区,如果操作正确,则所有查询的执行速度都会非常快。
本文档可能会对您有所帮助。
从性能的角度来看,主要的收获是 MySQL 5.1 分区是一个强大的新工具,可用于许多物理数据库设计,以显着提高性能并减轻 DBA 管理负担。有关 MySQL 分区的更多信息,您可以访问 http://dev.mysql.com/doc/refman/5.1/en/partitioning.html上的在线参考手册,并访问 MySQL 论坛,因为有专门的论坛部分分区,可以参考http://forums.mysql.com/list.php?106。
每当查询很慢时,首先要做的是确保在 WHERE 子句中提到的所有列上都有索引。