Ich habe ein Skript überprüft immer, ob die Zeile existiert oder nicht, abhängig von der Anpassung an das Ereignis.SQL - Überprüfung der vorhandenen Daten
Zum Beispiel:
if(exists($row)){
// update
}else{
// insert
}
Insert-Abfrage:
INSERT INTO table (name, value) VALUES
('...', '1'),
('...', '2'),
('...', '3'),
('...', '4'),
('...', '5'),
//...100x
UPDATE QUERY:
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')
Daten ist ziemlich viel, und stellen Sie sicher, dass der Datensatz lange genug existiert. Weil das Ausführen von 500x oder mehr erforderlich ist.
Exists-Methode:
SELECT id FROM table WHERE uuid=Y;
Es gibt eine Möglichkeit, irgendwie das Skript beschleunigen? Sie können vorhandene Daten überprüfen, die direkt zur Abfrage hinzugefügt wurden.
Kann ich nur eine Abfrage CREATE + UPDATE + CHECK EXISTING haben?
Vielen Dank für Ihre Hilfe!
Updating and adding data with verification : 27-40 SEC
Updating and adding data WITHOUT verification: 1-5 SEC
EDIT: Ich bin immer Daten von einem anderen Server wie json Beispielskript:
$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
In dieser Tabelle ist nur 300-2000 Zeilen (Ich verstehe nicht, warum es so lange dauert.)
EDIT2:
Dies ist wahrscheinlich meine Lösung:
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)))
);
Ich werde versuchen, den flotten Server zu starten und dann berühren.
Make Tabellenansicht mit select und dann einfügen, wenn Sie können. Nehmen Sie Daten aus der Datenbank selbst oder haben Sie lokale Daten vollständig? – Motsim
Einfügen ignorieren ... auf doppelte Update-Sachen? – Jakumi
fragen wurde aktualisiert @Motsim –