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 来说太差了的主要内容,如果未能解决你的问题,请参考以下文章