Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/71.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 5.7:优化在插入之前检查重复项的查询_Php_Mysql_Select_Insert_Duplicates - Fatal编程技术网

Php Mysql 5.7:优化在插入之前检查重复项的查询

Php Mysql 5.7:优化在插入之前检查重复项的查询,php,mysql,select,insert,duplicates,Php,Mysql,Select,Insert,Duplicates,我需要您帮助我优化此查询: $sql= "INSERT INTO myTable (id, id_lang, name) SELECT '" . $new_id . "', '4','" . $name. "' DUAL FROM WHERE NOT

我需要您帮助我优化此查询:

   $sql= "INSERT INTO myTable (id, id_lang, name)
                                SELECT '" . $new_id . "', '4','" . $name. "'
                                DUAL FROM
                                WHERE NOT EXISTS(
                                SELECT 1
                                myTable FROM
                                WHERE name = '" . $name. "' AND id_lang=4
                                )
                                LIMIT 1;";
它非常适合我需要的内容:如果没有重复项,请插入。 但是同样的查询在我的脚本中对7个不同的表重复了7次,最后执行时间非常长

你知道如何优化它吗


多谢各位

在字段
name
id\u lang
上创建唯一索引。它将防止重复这里昂贵的事情不是你如何编写查询,而是搜索本身,因为无论你如何表达它,你都必须进行搜索。要进行优化,您需要添加索引以使搜索速度更快(er)。(这里至少有一个名字,可能是name+id_lang)。如果使其唯一,则可以让数据库确保其唯一(但这取决于您的数据模型)。如果已经有索引,但仍然太慢,请添加有关表的详细信息。