2012-06-25 67 views
2

我有以下3個MySQL的InnoDB表(顯示爲表名:column_list中):MySQL的左連接很慢和MySQL服務器關閉

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)) 

我有標籤:身份證 我想找到meter_type已1級,2級或3級 我的查詢是

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服務器了。

如何解決這個問題?任何其他方式來寫這個查詢與速度

+5

使用'explain'來分析您的查詢並添加適當的索引。 –

+0

如果索引不起作用,您可以觸發3個差異查詢,它將在20秒內完成...... :) – 2012-06-25 07:01:52

回答

2

我敢打賭,你有沒有在這個領域添加索引:tag_type_idmeter_type_id。以下是關於如何在您的字段中正確添加索引的MySQL Documentation