两个表之间的查询缓慢
Query Slowness Between Two Tables
如果在我的"table1"中有符合"parent_id"值的结果]和"table2" tables,我想获取"table1"中的行数 table.
但是SQL查询时间太长。
table1.
中有 10 万 行
table2 中有 4 万 行。
一个table数据文件给你试试
参见:https://pastebin.pl/view/raw/ddf8c467
Table结构
CREATE TABLE table1 (id INT(11) UNSIGNED NOT NULL AUTO_INCREMENT ,
parent_id INT(11) UNSIGNED NOT NULL ,
tes1 INT(1) NOT NULL , PRIMARY KEY (id)) ENGINE = MyISAM;
CREATE TABLE table2 (id INT(11) UNSIGNED NOT NULL AUTO_INCREMENT ,
parent_id INT(11) UNSIGNED NOT NULL ,
tes2 INT(1) NOT NULL , PRIMARY KEY (id)) ENGINE = MyISAM;
SQL 我用的查询
SELECT COUNT(A.id) AS total
FROM table1 A
LEFT JOIN table2 B ON A.parent_id = B.parent_id
WHERE B.id IS NOT NULL
在 table B 上的 parent_id 上创建索引,并尽可能使用 INNODB。
你也可以使用内连接
SELECT COUNT(A.id) AS total
FROM table1 A
INNER JOIN table2 B ON A.parent_id = B.parent_id;
如果在我的"table1"中有符合"parent_id"值的结果]和"table2" tables,我想获取"table1"中的行数 table.
但是SQL查询时间太长。
table1.
中有 10 万 行table2 中有 4 万 行。
一个table数据文件给你试试 参见:https://pastebin.pl/view/raw/ddf8c467
Table结构
CREATE TABLE table1 (id INT(11) UNSIGNED NOT NULL AUTO_INCREMENT ,
parent_id INT(11) UNSIGNED NOT NULL ,
tes1 INT(1) NOT NULL , PRIMARY KEY (id)) ENGINE = MyISAM;
CREATE TABLE table2 (id INT(11) UNSIGNED NOT NULL AUTO_INCREMENT ,
parent_id INT(11) UNSIGNED NOT NULL ,
tes2 INT(1) NOT NULL , PRIMARY KEY (id)) ENGINE = MyISAM;
SQL 我用的查询
SELECT COUNT(A.id) AS total
FROM table1 A
LEFT JOIN table2 B ON A.parent_id = B.parent_id
WHERE B.id IS NOT NULL
在 table B 上的 parent_id 上创建索引,并尽可能使用 INNODB。
你也可以使用内连接
SELECT COUNT(A.id) AS total
FROM table1 A
INNER JOIN table2 B ON A.parent_id = B.parent_id;