Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/239.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 SELECT查询中包含大量数字的IN子句处理速度较慢_Php_Mysql - Fatal编程技术网

Php MySql SELECT查询中包含大量数字的IN子句处理速度较慢

Php MySql SELECT查询中包含大量数字的IN子句处理速度较慢,php,mysql,Php,Mysql,我编写了一个查询,从表1获取详细信息,其中包含以下条件子句: IN(number1,number2...... 到目前为止,多达323个条目。这些数字是table1的主键,它已从table2中提取并传递到IN-condition子句中 因此,我的查询速度变慢,需要13秒才能运行。有没有其他办法克服这个问题?如果我给出一些常量值(如PK id),查询将在正常时间工作。您也可以使用左连接来执行查询: 例如: SELECT T1.* FROM Table1 T1 LEFT JOIN Tab

我编写了一个查询,从
表1
获取详细信息,其中包含以下条件子句:

IN(number1,number2......
到目前为止,多达323个条目。这些数字是
table1
的主键,它已从
table2
中提取并传递到IN-condition子句中


因此,我的查询速度变慢,需要13秒才能运行。有没有其他办法克服这个问题?如果我给出一些常量值(如PK id),查询将在正常时间工作。

您也可以使用
左连接来执行查询:

例如:

SELECT T1.*
FROM Table1 T1 LEFT JOIN
     Table2 T2 ON T1.numberfield = T2.numberfield
WHERE T2.someotherfield IS NOT NULL
这正是使用
中的
进行查询的工作,请尝试下面的操作-

select a.* from table1 a join table2 b 
on a.parent_id=b.id;

注:表1中应为父项id编制索引,假设id为表b的主键,则表示已编制索引

我编写了一个查询来获取详细信息
查询在哪里?共享您现有的查询。请在您的查询中包含
EXPLAIN
的输出。包含完整的查询也会很有用,因为您可能认为您已经缩小了查询的范围,但是可能是查询的其他方面导致了查询的速度变慢。