【问题标题】:mysql left join very slow & mysql server downmysql left join 很慢 & mysql server down
【发布时间】:2012-06-26 10:27:19
【问题描述】:

我有以下 3 个 MySQL innoDb 表(显示为 table_name:column_list):

meter_type: id, meter_type (primary key id)
tag_type: id, meter_type_id (primary key id, foreign key meter_type_id(meter_type table))
tag: id, tag_type_id(primary key id, foreign key tag_type_id(tag_type table))

我有标签:id 我想找到级别 1、级别 2 或级别 3 的meter_type。 我的查询是

SELECT m.`meter_type`
  FROM `tag` t  
          LEFT JOIN `tag_type` tt 
              ON tt.`id` = t.`tag_type_id`  
          LEFT JOIN `meter_type` m 
              ON m.`id` = tt.`meter_type_id`  
 WHERE t.`id` = '10' 

耗时 4-4 分钟太慢了,这个查询导致 mysql 服务器宕机。

如何解决这个问题...任何其他快速编写此查询的方法

【问题讨论】:

  • 使用explain 分析您的查询并添加适当的索引。
  • 如果索引没有帮助,您可以触发 3 个差异查询,它将在 20 秒内完成...... :)

标签: mysql


【解决方案1】:

我敢打赌,您没有在以下字段上添加索引:tag_type_idmeter_type_id。下面是MySQL Documentation,介绍如何在字段中正确添加索引。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-05-09
    • 2014-03-15
    • 2015-03-16
    • 2012-12-23
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多