Php 如何在不使用“连接”的情况下在MySQL的连接中使用字符串;在;
我有一个顺序变量ID,如: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
$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!!