Нужно ускорить ГДЕ НЕ СУЩЕСТВУЕТ Запрос - PullRequest
0 голосов
/ 20 декабря 2018

Я считаю, что это вызывает задержку от 5 минут до 20 минут, в зависимости от количества записей.Мне нужно перевести его в левое соединение, но нужна помощь, чтобы получить его там.

qry_arr = array(':bill_type' => "INT");
$sql = "update ".$billing_table." c set c.bill_type = :bill_type";
$sql .= " WHERE  NOT EXISTS (SELECT s.abbreviation FROM   state s WHERE  s.abbreviation = c.out_location)";
$sql .= " and c.out_location != 'UNKNOWN' and c.out_location != ''";

1 Ответ

0 голосов
/ 20 декабря 2018
UPDATE $billing_table c
LEFT JOIN state s ON s.abbreviation = c.out_location
SET c.bill_type = :bill_type
WHERE s.abbreviation IS NULL
AND c.out_location NOT IN ('UNKNOWN', '')

По сути, это такой же синтаксис для SELECT для строк, которые не совпадают.См. Возвращать строку, только если значение не существует .Просто замените SELECT ... FROM на UPDATE и вставьте предложение SET перед WHERE.

Убедитесь, что у вас есть индексы для out_location и abbreviation.

...