Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/61.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php MySQL优化long-IN语句_Php_Mysql - Fatal编程技术网

Php MySQL优化long-IN语句

Php MySQL优化long-IN语句,php,mysql,Php,Mysql,我有一个名为PARENTTABLE id的项目表 我还有一个名为CHILDTABLE id,parent_id,。。。 带有对PARENTTABLE中的项的引用列 如何编写一个查询,只从PARENTTABLE中获取在CHILDTABLE中肯定有引用的项 目前我正在使用: SELECT * FROM PARENTTABLE WHERE id IN (SELECT parent_id FROM CHILDTABLE) 这是一种可接受的方法,还是有一种更优化的方法,因为随着时间的推移,子表中会有许多

我有一个名为PARENTTABLE id的项目表

我还有一个名为CHILDTABLE id,parent_id,。。。 带有对PARENTTABLE中的项的引用列

如何编写一个查询,只从PARENTTABLE中获取在CHILDTABLE中肯定有引用的项

目前我正在使用:

SELECT * FROM PARENTTABLE WHERE id IN (SELECT parent_id FROM CHILDTABLE)
这是一种可接受的方法,还是有一种更优化的方法,因为随着时间的推移,子表中会有许多条目,使得IN语句非常长。

存在一个版本

SELECT DISTINCT PARENTTABLE.* 
FROM PARENTTABLE
INNER JOIN CHILDTABLE ON CHILDTABLE.parent = PARENTTABLE.id
选择* 从父表p 哪里有 挑选* 从儿童桌 其中parent_id=p.id
下面是演示

尝试以下内容:

SELECT * from parent where id in (Select distinct parentid from child)

没有进一步的信息,这是一个通用的SQL问题。解决方案将是sql语句中的联接。