使用连接而不是子查询

时间:2012-08-21 16:06:38

标签: mysql join nested-query

我有一个包含两个表的mysql数据库 - [PM_text] [PM_bact] 等。这两个表包含一个公共数据列。我的目的是使用与第二个表中的公共数据列的匹配来从第一个表中检索信息。我最初使用嵌套查询,它已经工作正常。我突然注意到它不再完全执行了。我想使用'join'来查看是否会进一步优化它。

这是我的初步查询:

SELECT pmid,year,title,pages FROM PM_text WHERE pmid IN(SELECT PMd_id来自PM_bact WHERE bact1 LIKE?AND bact2 LIKE?AND associat LIKE?);

但我打算将其改为:

SELECT DISTINCT PM_text.pmid,PM_text.year,PM_text.title,PM_text.pages FROM PM_text,PM_bact WHERE PM_text.pmid = PM_bact.pmd_id AND PM_bact.bact1 LIKE?和PM_bact.bact2喜欢?和PM_bact.associat一样?

我需要确保匹配第二个表中的'bact1','bact2'和'associat',并担心在查询中重复使用'AND'可能会影响其优化。

我确信有更好的方法可以做到这一点,并且对这个主题不熟悉我会很感激您可以提供任何帮助。非常感谢。

1 个答案:

答案 0 :(得分:0)

你的第二个查询很好,很多和语句都没有错。确保你在pmid和pmd_id列上有索引,你应该看到它的良好性能。

你可以把它写出来,用on子句完全拼写出内连接,但是查询的执行方式与你现在的相同。