delete с select в условии

Статус
В этой теме нельзя размещать новые ответы.

achyorny

Новичок
можно ли это:
PHP:
$result = $this->db->query("SELECT * FROM product_to_store WHERE `product_id` NOT IN (SELECT `product_id` FROM product)");
foreach ($result->rows as $item)
	$this->db->query( "DELETE FROM product_to_store WHERE `product_id` ='".(int)$item['product_id']."'" );
заменить этим:
PHP:
$this->db->query( "DELETE FROM product_to_store WHERE `product_id` NOT IN (SELECT `product_id` FROM product)" );
?
 

С.

Продвинутый новичок
A у самого Mysql какое мнение по этому поводу?
 

achyorny

Новичок
ок, спс а по нагрузке на сервер если и php и мускл стоят на одном серваке какой вариант лучше?
 

Adelf

Administrator
Команда форума
achyorny
Скажу, что ты сейчас занимаешься ненужной херней :)
Особенно когда "снижаешь нагрузки" на сервере, где их пока нет.
 

achyorny

Новичок
:) да я люблю такой хернёй заниматься)) снииииииииижааааааааем наааааагррррууууууууууузкккккккииииииии!!!!!!!!!!
в идеале хочу, чтобы в инетмагазе было 2 запроса на страницу!!!!!!!!!!!!!!
 

achyorny

Новичок
и те кешировать!!!!!


ладно шутки в сторону,
вообще если есть возможность оптимизировать код, то хотел бы её использовать, чтобы легче было разобраться в нём в дальнейшем

а снижение нагрузки конечно будет, если уйдут ненужные циклы и т.д.
и это не может не радовать мою душу
 

korvin0

моська
Как вариант, можно и без подзапросов сделать, обойдясь только left join'ом, и сбором всех IDшников в один массив, и дальнейшим удалением нужных записей одним запросом
$result = $this->db->query("
SELECT product_to_store.*
FROM product_to_store
left join product on product.product_id = product_to_store.product_id
WHERE product.product_id IS NULL
");
$ids = array();
foreach ($result->rows as $item) $ids[] = intval($item['product_id']);
if (count($ids) > 0) $this->db->query( "DELETE FROM product_to_store WHERE `product_id` IN(".implode(',', $ids).")" );

Простой и надежный вариант :)
 

korvin0

моська
Ну, в данном случае может и незачем :)
Но никогда же не помешает знать несколько вариантов решения задачи.
 

Adelf

Administrator
Команда форума
Не говоря уже о том, что он на несколько порядков дороже.
Давайте-ка я закрою эту тему. Нечего обсуждать.
 
Статус
В этой теме нельзя размещать новые ответы.
Сверху