1
首先介紹,如果有一個更好的辦法:我有一個產品表中帶* PRODUCT_ID *和股票,其中股票可以大到5000或10000,我需要創建一個列表(在另一個表中),我有一個行的每個項目,這是,如果* propduct_id *有股票1000我將有1000行這個* product_id *,加上,這個列表需要是隨機。保存龐大的陣列到數據庫
我選擇了PHP(Symfony2的)解決方案,因爲我發現瞭如何基於股票甚至如何隨機順序的產品列表,隨機獲得一個單一的product_id,但我沒有找到如何通過「正片疊底」這一行股票。
現在,主要問題: 因此,在PHP中它是沒有那麼困難,得到的product_id名單,「正片疊底」的股市和洗牌,問題是當我想要保存:
- 如果我用
$em->flush
每100個記錄或更多我得到一個內存溢出而 - 後,如果我使用
$em->flush
在每次需要年齡記錄,以節約
這是我的代碼爲s AVE這也許可以提高:
foreach ($huge_random_list as $indice => $id_product)
{
$preasignacion = new ListaPreasignacion();
$preasignacion->setProductId($id_product);
$preasignacion->setOrden($indice+1);
$em->persist($preasignacion);
if ($indice % 100 == 0) $em->flush();
}
$em->flush();
編輯基於@Pazi建議最終的解決方案:
$conn = $em->getConnection();
foreach ($huge_random_list as $indice => $id_product)
{
$conn->executeUpdate("insert into product_list(product_id, order) "
." values({$id_product}, {$indice})");
}
是的,速度更快!在15秒內做了10.000條記錄 – 2013-05-09 19:28:49
@ K.Weber,原始代碼的性能如何?只是好奇。 – 2013-05-09 19:36:50