【问题标题】:SQL Query Performence is too bad for MySQLSQL 查询性能对 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() 函数消除了索引的好处

标签: mysql sql database sql-tuning


【解决方案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 分钟听起来还不错....

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多