我有两个非常大的表>每行1M行。基本上,我需要的是显示结果,当找到巧合时,两个表的信息混合在一起。简化,他们都有这样的结构:
TABLE_A:
-------
id | item_id | some_fields_A
TABLE_B:
-------
id | item_id | some_fields_B
如您所见,它们都有一个唯一的字段item_id
。我想要做的是找到两个表格中的哪些项目并显示item_id
,some_fields_A
和some_fields B
。我想知道提高性能的良好做法,我尝试过简单的查询
SELECT item_id, some_fields_A, some_fields_B
FROM TABLE_A, TABLE_B
WHERE TABLE_A.item_id = TABLE_B.item_id
显示超过1小时后的结果。我正在使用InnoDB引擎。感谢任何帮助。谢谢。
答案 0 :(得分:5)
执行以下工作:
SELECT a.item_id, a.some_fields_A, b.some_fields_B
FROM TABLE_A a
INNER JOIN TABLE_B b ON a.item_id = b.item_id;
在执行查询之前,只执行一次查询。
CREATE INDEX fields_a_idx ON TABLE_A(item_id);
并且
CREATE INDEX fields_b_idx ON TABLE_B(item_id);
表示您需要对表进行索引以提高查询INDEX的性能。
答案 1 :(得分:2)
我猜最好的方法是使用INNER JOIN:
SELECT *
FROM table_a AS A
INNER JOIN table_b AS B
ON A.item_id = B.item_id
确保您的item_id是主键。