SQL 查询性能对 MySQL 来说太差了

Posted

技术标签:

【中文标题】SQL 查询性能对 MySQL 来说太差了【英文标题】:SQL Query Performence is too bad for MySQL 【发布时间】:2011-12-25 00:49:08 【问题描述】:

我在 mysql 平台上运行以下 SQL 查询。

表 A 是具有单列(主键)和 25K 行的表。 表 B 有几列和 75K 行。

执行以下查询需要 20 分钟。如果您能提供帮助,我会很高兴。

INSERT INTO sometable
SELECT A.PrimaryKeyColumn as keyword, 'SomeText', B.*
FROM A, B
WHERE B.PrimaryKeyColumn = CONCAT(A.PrimaryKeyColumn, B.NotUniqueButIndexedColumn);

【问题讨论】:

我认为 Concat() 函数消除了索引的好处 【参考方案1】:

在没有INSERT 的情况下运行SELECT 以查看问题是否出在SELECT 上。

如果是SELECT,请关注the MySQL documentation explaining how to optimize queries using EXPLAIN

如果SELECT 运行良好,但INSERT 需要很长时间,请确保sometable 上没有很多不必要的索引。除此之外,您可能需要进行一些 MySQL 调优和/或操作系统调优(例如内存或磁盘性能),以通过INSERT 获得可衡量的性能提升。

【讨论】:

【参考方案2】:

如果我猜对了,您大概是在尝试插入 18.75 亿条记录 - (与 where 子句不匹配)。

这 20 分钟听起来还不错....

【讨论】:

以上是关于SQL 查询性能对 MySQL 来说太差了的主要内容,如果未能解决你的问题,请参考以下文章

MySQL 性能调优——SQL 查询优化

关系型数据库---MYSQL---优化

对链接服务器进行查询

如何对Oracle sql 进行性能优化的调整

高性能mysql 第6章 查询性能优化

mysql性能优化