Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/232.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
在不使用循环mysql php的情况下,从一个大表中删除多个具有不同标识符的记录_Php_Mysql_Sql_Innodb_Sql Delete - Fatal编程技术网

在不使用循环mysql php的情况下,从一个大表中删除多个具有不同标识符的记录

在不使用循环mysql php的情况下,从一个大表中删除多个具有不同标识符的记录,php,mysql,sql,innodb,sql-delete,Php,Mysql,Sql,Innodb,Sql Delete,我有一张百万行的桌子。我需要从15k长的列表中删除所有列等于某个值的行 现在,我将其设置为: $list = array( "Item1", ... "Item15000" ); foreach ($list as $item){ $sql = "Delete from table where `item`='$item'"; if ($con->query($sql) === TRUE) { echo "$item removed from table &l

我有一张百万行的桌子。我需要从15k长的列表中删除所有列等于某个值的行

现在,我将其设置为:

$list = array(
"Item1",
...
"Item15000"
);

foreach ($list as $item){

$sql = "Delete from table where `item`='$item'";

if ($con->query($sql) === TRUE) {
            echo "$item removed from table <br>";
        } else {
            echo "Error removing $item from shop_meta: " . $con->error . "<br>";
        }

}
$list=array(
“项目1”,
...
“项目15000”
);
foreach($项目列表){
$sql=“从表中删除,`item`='$item';
如果($con->query($sql)==TRUE){
echo“$item已从表中删除
”; }否则{ echo“从商店删除$item时出错:“.con->Error.”; } }
在它当前的状态下,它需要很多小时才能完成,而我也必须为许多其他类似的表完成它


如何加快查询速度或优化查询?有没有一种方法可以一次查询所有数据以更快地完成任务?

将这些15k列表放入一个表中,然后加入到表中

Delete t
from your_table t
join temp_table tt on t.item = tt.delete_value
计划A:

DELETE FROM t WHERE item IN (...long list of ids...)
方案B:

做一个计划,但以1000个ID为单位。这将对其他用户和复制(如果相关)更友好。建议使用
autocommit=ON
运行


大型删除。

临时表是否只应包含一列
delete\u值
?是的,不需要更多。如果您已经在数据库中有了这些值,那么您可以将它们加入到DBAH中的任何位置,这是完美的,事实上,我已经有了一个表,其中包含需要筛选的项列表!非常感谢师父!