PHWinfo banniere

Titres
PORTAIL ANNUAIRE ARTICLES COMPARATEUR HÉBERGEURS DEVIS FORUMS RÉDUCTEUR D'URL
Précédent   PHWinfo > Autres forums > Forum Programmation & Conception > mysql.general > bulk updates/inserts and triggers
S'inscrire FAQ Membres Recherche Messages du jour Marquer les forums comme lus
bulk updates/inserts and triggers

Réponse
 
LinkBack Outils de la discussion
Vieux 30/12/2007, 11h07   #1
C K
Aucun Avatar
 
Messages: n/a
Hébergeur:
Par défaut bulk updates/inserts and triggers

Hello,
I am facing a problem related with triggers and bulk updates/inserts.
I have two tables one is having 'transactions' and another is 'documents'.
Each record in transactions table relates with a document by DocId. Foreign
keys are created.
I have activated triggers for transactions table for after insert, afters
update, before delete.
trigger makes a sum of amount in all transactions for a document referenced
by docId in that perticular transaction and stores it in another temporary
table and then updates the amounts in documents table.
When I will go for inserting 10K records at a time, the insert becomes too
slow. Why?
Is there any solution to this?

I am using MySQL 5.0.45 on Redhat Ent. Linux 5 - 64bit, 4 GB RAM, Xeon
procesors and MySQL Connector ODBC 5.1 Beta, MS Acess 2003 on WindowsXp SP2.
I also tried to inster this records directly by passing queries to MySQL,
but still it is slow!
Please .
Thanks

CPK

the scripts are as follows-


-- ----------------------------
-- Table structure for cb_canebills
-- ----------------------------
CREATE TABLE `cb_canebills` (
`ID` int(11) NOT NULL auto_increment,
`AssociateSCPId` int(11) default NULL,
`PeriodNo` int(11) default NULL,
`SlipCount` int(11) default NULL,
`TotalWeight` decimal(9,3) default NULL,
`NormalWeight` decimal(9,3) default NULL,
`JalitWeight` decimal(9,3) default NULL,
`NormalAmount` decimal(15,2) default NULL,
`JalitAmount` decimal(15,2) default NULL,
`NormalRate` decimal(15,2) default NULL,
`JalitRate` decimal(15,2) default NULL,
`PayRate` decimal(15,2) default NULL,
`TotalAmount` decimal(15,2) default '0.00',
`HAmount` decimal(15,2) default NULL,
`TAmount` decimal(15,2) default NULL,
`HComissionAmount` decimal(15,2) default NULL,
`TComissionAmount` decimal(15,2) default NULL,
`TotalAgainstAmount` decimal(15,2) default '0.00',
`NetPayAmount` decimal(15,2) default '0.00',
`BankID` int(11) default '0',
`BankAccNo` decimal(20,4) default NULL,
`CaneBillNo` varchar(20) collate utf8_unicode_ci default NULL,
`CaneBillDate` date default NULL,
`AssociateType` int(11) default NULL,
`CrushSeason` int(11) default NULL,
`ChequeNo` varchar(10) collate utf8_unicode_ci default NULL,
`ChequeDate` date default NULL,
`ChequeAmount` decimal(15,2) default NULL,
`BankOrCashAmount` decimal(15,2) default NULL,
`InstallmentNo` int(11) default NULL,
`tmpTS` timestamp NULL default '1999-11-11 11:11:11',
`CreatedBy` int(11) default NULL,
`CreatedTimeStamp` datetime default NULL,
`LastModifiedBy` int(11) default NULL,
`LastModifiedTimeStamp` datetime default NULL,
`Locked` tinyint(4) default NULL,
`CaneBillRemark` varchar(300) collate utf8_unicode_ci default NULL,
`CoBranch` int(11) default NULL,
`CoYear` int(11) default NULL,
`CaneBillStatus` int(11) default NULL,
`AccVoucherCreated` tinyint(4) default NULL,
`Approved` tinyint(4) default NULL,
`ApprovedBy` int(11) default NULL,
`IsTemplate` tinyint(4) default NULL,
`ReportH_RCS` int(11) default NULL,
`ReportF_RCS` int(11) default NULL,
`CaneBillCurrency` int(11) default NULL,
`CaneBillExchangeRate` decimal(15,2) default NULL,
`LastAccDate` date default NULL,
`Billed` tinyint(4) default NULL,
`tmpSelect` tinyint(4) default '0',
`DocType` int(11) default NULL,
`BillFromDate` date default NULL,
`BillToDate` date default NULL,
`Partial` tinyint(4) default NULL,
`IsTemp` tinyint(4) default NULL COMMENT 'Temprory bill or not',
`PaidThroughBankAccount` int(4) default NULL COMMENT 'bank
account(associates) through which payment is issued',
`BCId` int(11) default NULL,
`PaymentThroughLedger` int(11) default NULL,
`DCLogId` int(11) default NULL,
`tmpSelectedByUser` int(11) default NULL,
`AllowAllUsersToView` tinyint(4) default '-1' COMMENT 'view this doc to
all while browsing except than created/Last',
PRIMARY KEY (`ID`),
KEY `First_billID` (`ID`),
KEY `First_billP_no` (`PeriodNo`),
KEY `FKAssociate` (`AssociateSCPId`),
KEY `Indbcid` (`BCId`)
) ENGINE=InnoDB AUTO_INCREMENT=9455 DEFAULT CHARSET=utf8
COLLATE=utf8_unicode_ci;

-- ----------------------------
-- Table structure for cb_canebilltransactions
-- ----------------------------
CREATE TABLE `cb_canebilltransactions` (
`CaneBillTransactionId` int(11) NOT NULL auto_increment,
`DocId` int(11) NOT NULL,
`DocType` int(11) default NULL,
`AgainstId` int(11) NOT NULL,
`AgainstAmount` decimal(15,2) unsigned zerofill default '0000000000000.00
',
`LineRemark` varchar(300) collate utf8_unicode_ci default NULL,
`CreatedBy` int(11) default NULL,
`CreatedTimeStamp` datetime default NULL,
`LastModifiedBy` int(11) default NULL,
`LastModifiedTimeStamp` datetime default NULL,
`Locked` tinyint(4) default NULL,
`tmpTS` timestamp NULL default '1999-11-11 11:11:11',
`BankId` int(11) default NULL,
`LoanSchemeId` int(11) default NULL,
`DetailsForExtras` varchar(30) collate utf8_unicode_ci default NULL,
`AddOrSubstract` tinyint(4) default NULL,
`LinkedAssociateId` int(11) default NULL,
PRIMARY KEY (`CaneBillTransactionId`),
KEY `FKCaneBills` (`DocId`)
) ENGINE=InnoDB AUTO_INCREMENT=280743 DEFAULT CHARSET=utf8
COLLATE=utf8_unicode_ci;

-------------

TRIGGER FOR CB_canebilltransactions
Same for After Insert, After Update and Before Delete
-------------

BEGIN

DELETE cb_tmpbills.* from cb_tmpbills;

INSERT INTO cb_tmpbills ( TotalAgainstsAmount, BillTansactionId, BillId )
SELECT Sum(cb_canebilltransactions.AgainstAmount) AS SumOfAgainstAmount,
cb_canebilltransactions.caneBillTransactionId, cb_canebilltransactions.DocId
FROM cb_canebilltransactions INNER JOIN cb_canebills ON
cb_canebilltransactions.DocId = cb_canebills.ID GROUP BY
cb_canebilltransactions.caneBillTransactionId, cb_canebilltransactions.DocId
HAVING (((cb_canebilltransactions.caneBillTransactionId)=
new.caneBillTransactionId));

UPDATE cb_canebills INNER JOIN cb_tmpbills ON cb_canebills.ID =
cb_tmpbills.BillId SET cb_canebills.TotalAgainstAmount =
cb_tmpbills.TotalAgainstsAmount;

UPDATE cb_canebills INNER JOIN cb_tmpbills ON cb_canebills.ID =
cb_tmpbills.BillId SET cb_canebills.NetPayAmount =
cb_canebills.TotalAmount-cb_canebills.TotalAgainstAmount;


END

--
Keep your Environment clean and green.

  Réponse avec citation
Réponse


Outils de la discussion

Règles de messages
Vous ne pouvez pas créer de nouvelles discussions
Vous ne pouvez pas envoyer des réponses
Vous ne pouvez pas envoyer des pièces jointes
Vous ne pouvez pas modifier vos messages

Les balises BB sont activées : oui
Les smileys sont activés : oui
La balise [IMG] est activée : oui
Le code HTML peut être employé : non
Trackbacks are oui
Pingbacks are oui
Refbacks are oui


Fuseau horaire GMT +1. Il est actuellement 04h52.


Édité par : vBulletin® version 3.7.3
Copyright ©2000 - 2008, Jelsoft Enterprises Ltd.
Search Engine Friendly URLs by vBSEO 3.2.0 RC5 Tous droits réservés.
Version française #16 par l'association vBulletin francophone
PHWinfo est un site Éducation Sans Frontières ©2000-2008
Ad Management by RedTyger
©Tous droits réservés par les parties respectives
Page generated in 0,09707 seconds with 9 queries