2012-06-26 48 views
0

我有一个MySQL查询很简单,但运行速度非常慢。我有两个表corporate_main_membercorporate_main_corporate_membership,我运行下面的查询:简单的Mysql查询运行缓慢

SELECT m.gender FROM corporate_main_member m, corporate_main_corporate_membership cm where m.id = cm.FK_member_ID and cm.FK_corporation_id = 6 

当我不包括第二个条件(cm.FK_corporation_id = 6),查询运行正常....

+2

在FK_corporation_id上创建一个索引。 –

+0

知道这两个表中有多少数据也很有趣? – dom

+0

什么是“慢”?您是否尝试过运行此查询的子部分并对其进行计时?这可以帮助您确定瓶颈在哪里。 –

回答

1

使用JOIN关键字查询并在FK_corporation_id上创建一个索引。

SELECT m.gender 
FROM corporate_main_member m 
     INNER JOIN corporate_main_corporate_membership cm 
       ON m.id = cm.fk_member_id 
WHERE cm.fk_corporation_id = 6 
+0

非常感谢。 fk_corporation_id是一个外键。我们可以在其上添加另一个索引吗?对于这个简单的问题,我是初学者很抱歉 – user557105

+0

是的,如果表中已经定义了聚集索引(PK),那么您可以在任何列上添加非聚集索引(在您的案例的FK上)。 –

+0

加入索引并没有解决问题。在具有相同数据库的另一台计算机上,查询执行正确 – user557105

1

这是更有效的上述查询形式。

SELECT 
m.gender 
FROM corporate_main_member m, 
corporate_main_corporate_membership cm on(m.id = cm.FK_member_ID) 
where cm.FK_corporation_id = 6 

虽然您可以在corporate_main_corporate_membership上创建索引。

0
SELECT 
    m.gender 
FROM corporate_main_member AS m 
    LEFT JOIN corporate_main_corporate_membership AS cm 
ON m.id = cm.FK_member_ID 
    AND cm.FK_corporation_id = 6