2015-08-14 4 views
1

У меня 100 строк в таблице tbl_master_sales и пустая таблица tbl_customer_sales .Когда я использую While Loop для вставки данных из tbl_master_sales к tbl_customer_sales, он вставляет только 50 rows.However, он должен иметь вставку 100 строк, принимая две итерации, а loop.What может быть моя ошибка в следующем порядке:время цикла не работает, как предполагалось в процедуре тузд

CREATE PROCEDURE ROWPERROW() 
BEGIN 
    DECLARE n INT DEFAULT 0; 
    DECLARE i INT DEFAULT 0; 
    SELECT COUNT(*) FROM tbl_master_sales INTO n; 
    SET i=0; 
    WHILE i<n DO 

     INSERT INTO tbl_customer_sales (id,card_number,customer_name,customer_phone,bill_no,item_code,division,section,department,item_name,store,promo_name,billdiscount_name,billqty,promo_amount,bill_discount_amount,loyaltyamount,net_amount) 
      SELECT id, card_number, customer_name, customer_mobile, billno, itemcode, division, section, department, itemname, store, promoname, billdiscountname, billqty, promoamount, billdiscountamount, loyaltyamount, netamount 
       FROM tbl_master_sales 
      WHERE NOT EXISTS(SELECT 1 
           FROM tbl_customer_sales 
           WHERE id=tbl_master_sales.id) 
      LIMIT i,50; 


     SET i = i + 50; 
    END WHILE; 
End;; 

ответ

0

Я не вижу ничего плохого в вашей логике коды процедуры, но причина для вставки только 50 строк могут быть NOT EXISTS части как показано ниже, что ограничивает возможность вставки повторяющихся строк (или) фильтрации остальных записей.

WHERE NOT EXISTS(
SELECT 1 
FROM tbl_customer_sales 
WHERE id=tbl_master_sales.id) 
+0

да я использую НЕ СУЩЕСТВУЕТ часть для избежания duplication.I нужна эта часть тоже, и нужно вставить 50 записей каждый за iteration.Actually я использовал курсор на него и раньше, но у него есть проблемы с производительностью, и, когда я использую INSERT. ..SELECT, чтобы вставить данные, которые он вставляет в единый массив, который висит всего mysql для миллионов данных. Однако мне нужна процедура, которая вставляет около 1000 строк в секунду и не зависает mysql. Как я могу это сделать? Есть идеи? – Sumit

Смежные вопросы