gpt4 book ai didi

mysql - 从一个sql表中选择数据并查看它是否与同一数据库中另一个表上的数据匹配的最有效方法

转载 作者:行者123 更新时间:2023-11-29 22:16:11 24 4
gpt4 key购买 nike

我有一个包含 2 个表的数据库,两个表都有大约 200,000 条记录。

我们将这些表称为 TableA 和 TableB

目前我有一个触发选择查询的函数,该查询会抓取 TableA 中符合条件的所有记录。获得该数据后,我有一个 foreach 循环,它使用 TableA 中的数据来查看它是否与 TableB 中的任何记录匹配。

问题在于,由于记录太多,因此需要一段时间才能完成此操作。我知道我这样做的方式是有效的,因为它做了它应该做的事情,但需要 3 分钟才能完成脚本。有没有更快更有效的方法来做这样的事情?

预先感谢您的帮助。

PS:我使用的是 PHP。

最佳答案

实现您想要的目标的最有效方法是:

<强>1。为每个表创建一个主键列(如果您还没有)。示例架构,其中列“id”是表行的唯一标识符:

TableAid    firstname   lastname1     Michael     Douglas2     Michael     Jackson
TableBid   table_a_id   pet1    1            cat2    2            ape3    1            dog

Google or search here on stackoverflow on how to create or add a primary key for a mysql table column. An example of creating TableA with a primary key:

CREATE TABLE `TableA` (
`id` int(11) unsigned AUTO_INCREMENT,
`firstname` varchar(100),
`lastname` varchar(100),
PRIMARY KEY (`id`)
)

<强>2。创建一个 SQL 查询来获取您需要的内容。例如:

要获取两个表中至少有一个匹配项的所有行:

SELECT TableA.id, TableA.firstname, TableA.lastname, TableB.pet
FROM TableA
INNER JOIN TableB
ON TableA.id = TableB.table_a_id;

要从 TableA 中获取所有行,并仅从 TableB 中获取匹配的行:

SELECT TableA.id, TableA.firstname, TableA.lastname, TableB.pet
FROM TableA
LEFT JOIN TableB
ON TableA.id=TableB.table_a_id;

关于mysql - 从一个sql表中选择数据并查看它是否与同一数据库中另一个表上的数据匹配的最有效方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31194726/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com