2016-02-12 59 views
-2

我得到这个查询:优化MySQL表和/或查询

SELECT * FROM `company` c LEFT JOIN 
     contacts2company c2c ON c2c.companyID = c.companyID LEFT JOIN 
     contacts con ON con.contactsID = c2c.contactsID 

,它需要像2分钟来执行。 公司表约为40K条记录, contacts2company是9K 联系人大概是9k c.companyID是主键 con.contactsID也是主键。 有关如何优化数据库结构以更快运行的任何想法?

+0

你的桌子上有索引吗? – ocean800

+2

您可以在stackoverflow上发布一个问题,包括您的表/索引的结构,查询的EXPLAIN计划以及在一个查询中使用左连接并读取数据集中的每一行的理由。 – symcbean

+0

主键总是被索引,但你的'contacts2company'表呢?我假设“LEFT JOIN”是正确的? – Marvin

回答

0

将查询中的*替换为需要查询的列。例如:

SELECT c.companyID, con.contactName FROM `company` c LEFT JOIN 
     contacts2company c2c ON c2c.companyID = c.companyID LEFT JOIN 
     contacts con ON con.contactsID = c2c.contactsID 

这应该会减少执行查询所花费的时间。