0

我有一个 mysql 数据库,其中包含两个表 - [PM_text][PM_bact]等。这两个表包含一个公共数据列。我的意图是使用与第二个表中的公共数据列的匹配项从第一个表中检索信息。我最初为此使用了嵌套查询,并且效果很好。我突然注意到它不再最终执行。我想改用'joins',看看是否会进一步优化它。

这是我的初始查询:

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

但我打算将其更改为:

从 PM_text、PM_bact 中选择不同的 PM_text.pmid、PM_text.year、PM_text.title、PM_text.pages 在哪里 PM_text.pmid = PM_bact.pmd_id 和 PM_bact.bact1 喜欢?和 PM_bact.bact2 喜欢吗?和 PM_bact.associat 喜欢吗?;

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

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

4

1 回答 1

0

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

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

于 2012-08-21T16:28:29.753 回答