Php SQL-现有数据的验证

Php SQL-现有数据的验证,php,mysql,sql,database,Php,Mysql,Sql,Database,我有一个脚本总是验证行是否存在,这取决于对事件的调整 例如: if(exists($row)){ // update }else{ // insert } 插入查询: INSERT INTO table (name, value) VALUES ('...', '1'), ('...', '2'), ('...', '3'), ('...', '4'), ('...', '5'), //...100x 更新查询:

我有一个脚本总是验证行是否存在,这取决于对事件的调整

例如:

if(exists($row)){
    // update
}else{
    // insert
}
插入查询:

INSERT INTO table (name, value) VALUES 
    ('...', '1'), 
    ('...', '2'), 
    ('...', '3'), 
    ('...', '4'), 
    ('...', '5'), 
    //...100x
更新查询:

 UPDATE table
     SET value = CASE uuid
         WHEN 'x' THEN 1
         WHEN 'y' THEN 2
     END,
     SET value1 = CASE uuid
         WHEN 'x' THEN 1
         WHEN 'y' THEN 2
     END
     WHERE uuid IN ('x','y')
数据非常多,请验证记录是否存在足够长的时间。因为执行必要的500倍或更多

存在方法:

SELECT id FROM table WHERE uuid=Y;
是否有可能以某种方式加快脚本的速度?是否可以验证直接添加到查询中的现有数据

我可以只使用一个查询创建+更新+检查现有吗

谢谢你的帮助

Updating and adding data with verification : 27-40 SEC
Updating and adding data WITHOUT verification: 1-5 SEC
编辑:我正在从另一台服务器获取数据,如json示例脚本:

$data = json_decode($_POST["data"]);
foreach($data as value){
    // value is an array
    if(exists($value["uuid"])){
         $this->appendUpdate($value); // building the update query
    }else{
         $this->appendInsert($value); // building the insert query
    }
}

    $this->insert();  // for example: 30 inserts in 1 query
    $this->update();  // for example: 500 updates in 1 query
这个表中只有300-2000行(我不明白为什么需要这么长时间)

编辑2:

这可能是我的解决方案

INSERT INTO test (uuid, value) VALUES
    ('aaa', 1),
    ('bbb', 2),
    ('ccc', 3)
    ON DUPLICATE KEY UPDATE
    value = (
        IF(uuid='aaa', 4, IF(uuid='bbb', 5, IF(uuid='ccc', 6, value)))
    ); 

我将尝试运行brisk服务器,然后触摸。

确保列uuid具有唯一索引,您可以执行以下查询

INSERT INTO table (a,b) VALUES (1,2)
   ON DUPLICATE KEY UPDATE b=4;
大概是这样的:

INSERT INTO table(name,value)
SELECT table2name as name, table2value as value FROM table2 
WHERE uuid IS NULL;

如果可以,请使用“选择然后插入”创建表视图。您是从数据库本身获取insert数据,还是完全拥有本地数据?insert ignore。。。关于重复的更新内容?ask已更新@MotsimI将使用1)事务。2) 循环外的准备好的查询。我想会很快。尤其是使用
insert。。重复时…
查询。编写代码也很容易。我不能使用UUID作为主键,因为主键是“ID”-UUID只是另一台服务器中的主键-不是我的。唯一索引不是主键。它们非常相似,但每个表可以有多个唯一的索引,所以这应该不是问题。aaaaa-hmmm它可能正在工作(在不同的测试表上),我将尝试在实际脚本中工作@MarcHoHBut,我只需要一个查询,而不是像这样的1000次插入,它可能会像验证一样缓慢。有没有办法在一个问题上解决这个问题?像这样@MarcHoHIt可以使用多个插入,例如:
在重复键更新b=5时将值(1,2)、(2,4)插入到表(a,b)中。但就像普通的update语句一样,在重复密钥更新时只能有一个