Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/powerbi/2.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的连接中使用字符串;在;_Php_Mysql - Fatal编程技术网

Php 如何在不使用“连接”的情况下在MySQL的连接中使用字符串;在;

Php 如何在不使用“连接”的情况下在MySQL的连接中使用字符串;在;,php,mysql,Php,Mysql,我有一个顺序变量ID,如: $OrderIds = "1,2,3,4,5,6"; //thousands of ids 我想在MySQL join中使用这个字符串,而不使用“IN”语句,因为“IN”语句需要很多时间来执行,我认为“IN”语句不适合这种情况 提前感谢。如果您不想在中使用,可以使用UNION: $sql="" $OrderIds=explode(',',$OrderIds); for($i=0;$i++;$i<count($OrderIds)){ $where.=" S

我有一个顺序变量ID,如:

$OrderIds = "1,2,3,4,5,6"; //thousands of ids
我想在MySQL join中使用这个字符串,而不使用“IN”语句,因为“IN”语句需要很多时间来执行,我认为“IN”语句不适合这种情况


提前感谢。

如果您不想在中使用,可以使用UNION:

$sql=""
$OrderIds=explode(',',$OrderIds);
for($i=0;$i++;$i<count($OrderIds)){
   $where.=" SELECT * FROM mytable WHERE orderId=".$OrderIds[$i]; //quote the id
   if($i<count($OrderIds)-1) $where.=" UNION ";
}
$db->query($sql);
$sql=“”
$OrderIds=分解(“,”,$OrderIds);

对于($i=0;$i++;$i实际上,
子句中的
没有问题。您正在使用的列可能正在扫描整个表。如果列不是
主键或索引,请在列上创建
索引
。这样您的查询将运行得更快。要求提高性能的问题应包括更多信息。什么是相关表的实际查询?定义(CREATE语句)。表中有多少行?in子句中有多少ID?EXPLAIN在说什么?当您说“我想”,这并不意味着什么。据我所知,使用IN查询是查询同一字段的多个值的最佳方法。如果您能提供您的声明的文档证明,请在问题中这样做。是的,这不会更快。即使您可能会在IN方面节省一些性能,您也会在php loopOk中丢失它,但我只是回答g:我们如何在不使用“in”的情况下在mysql的连接中使用字符串在语句内部使用OR可能与使用OR相同,但它会非常慢。你是对的,但我想找到最好的方法,因为通过这种方法,我们的查询执行时间很慢,因为我有1000多个订单ID。根据我的经验,我意识到在订单ID数量有限(如10-20)的情况下,IN和OR是有用的。我们表中有超过1000000行..这就是我不想使用此方法的原因谢谢Tobia!!