I have a few posts about this issue but I don't seem to get iit sorted I have an update query that runs in about 40 secs on the local machine but so far I have killed it after 2 hours over the network.
I have tried many things including turning autoname off, adding and deleteing indexes, changing record locks, setting up a new database (local machine) that links to the table in the DB on the network and performing the update on my local Db with no luck.
Currently it is updating around 46000 (all records) records on IBMUploadTemp and 57000 exist on GLIBMPlan.
Here is my query any ideas on how to speed it up?
UPDATE GLIBMPlan INNER JOIN IBMUploadTemp ON (GLIBMPlan.FY = IBMUploadTemp.Period_Year) AND (GLIBMPlan.PERIOD = IBMUploadTemp.Period_Num) AND (GLIBMPlan.Channel = IBMUploadTemp.Channel) AND (GLIBMPlan.ACCOUNT = IBMUploadTemp.Account) AND (GLIBMPlan.STATE = IBMUploadTemp.State) AND (GLIBMPlan.PGCODE = IBMUploadTemp.PGCode) AND (GLIBMPlan.Brand = IBMUploadTemp.Brand) AND (GLIBMPlan.ITEM = IBMUploadTemp.Item) SET GLIBMPlan.Cases = [IBMUploadTemp]![SumOfCases], GLIBMPlan.AMT = [IBMUploadTemp]![AMT];
I have built the table IBMUploadTemp in order to facilitate the update.
I also hav an append query that I use to append records that do not exist on GLIBMPlan I havn't tested that yet but may have similar problems (code follows
INSERT INTO GLIBMPlan ( ITEM, DESCR, Brand, PGCODE, PROMGRP, PACKSIZE, STATE, Cases, LD, FY, PeriodName, PERIOD, ACCOUNT, Channel, AMT )
SELECT AppendIBMUploadSelectUnion.Item, AppendIBMUploadSelectUnion.Descr, AppendIBMUploadSelectUnion.Brand, AppendIBMUploadSelectUnion.PGCode, AppendIBMUploadSelectUnion.PromoGroup, AppendIBMUploadSelectUnion.Packsize, AppendIBMUploadSelectUnion.State, Sum(AppendIBMUploadSelectUnion.SumOfCases) AS SumOfSumOfCases, AppendIBMUploadSelectUnion.LD, AppendIBMUploadSelectUnion.Period_Year, AppendIBMUploadSelectUnion.Period_Name, AppendIBMUploadSelectUnion.Period_Num, AppendIBMUploadSelectUnion.Account, AppendIBMUploadSelectUnion.Channel, Sum(AppendIBMUploadSelectUnion.AMT) AS SumOfAMT
FROM AppendIBMUploadSelectUnion LEFT JOIN GLIBMPlan ON (AppendIBMUploadSelectUnion.Channel = GLIBMPlan.Channel) AND (AppendIBMUploadSelectUnion.Period_Year = GLIBMPlan.FY) AND (AppendIBMUploadSelectUnion.Period_Num = GLIBMPlan.PERIOD) AND (AppendIBMUploadSelectUnion.Account = GLIBMPlan.ACCOUNT) AND (AppendIBMUploadSelectUnion.State = GLIBMPlan.STATE) AND (AppendIBMUploadSelectUnion.PGCode = GLIBMPlan.PGCODE) AND (AppendIBMUploadSelectUnion.Brand = GLIBMPlan.Brand) AND (AppendIBMUploadSelectUnion.Item = GLIBMPlan.ITEM)
GROUP BY AppendIBMUploadSelectUnion.Item, AppendIBMUploadSelectUnion.Descr, AppendIBMUploadSelectUnion.Brand, AppendIBMUploadSelectUnion.PGCode, AppendIBMUploadSelectUnion.PromoGroup, AppendIBMUploadSelectUnion.Packsize, AppendIBMUploadSelectUnion.State, AppendIBMUploadSelectUnion.LD, AppendIBMUploadSelectUnion.Period_Year, AppendIBMUploadSelectUnion.Period_Name, AppendIBMUploadSelectUnion.Period_Num, AppendIBMUploadSelectUnion.Account, AppendIBMUploadSelectUnion.Channel, GLIBMPlan.Channel, GLIBMPlan.ITEM, GLIBMPlan.Brand, GLIBMPlan.PGCODE, GLIBMPlan.ACCOUNT, GLIBMPlan.STATE, GLIBMPlan.FY, GLIBMPlan.PERIOD
HAVING (((GLIBMPlan.Channel) Is Null) AND ((GLIBMPlan.ITEM) Is Null) AND ((GLIBMPlan.Brand) Is Null) AND ((GLIBMPlan.PGCODE) Is Null) AND ((GLIBMPlan.ACCOUNT) Is Null) AND ((GLIBMPlan.STATE) Is Null) AND ((GLIBMPlan.FY) Is Null) AND ((GLIBMPlan.PERIOD) Is Null));
thanks in advance
I have tried many things including turning autoname off, adding and deleteing indexes, changing record locks, setting up a new database (local machine) that links to the table in the DB on the network and performing the update on my local Db with no luck.
Currently it is updating around 46000 (all records) records on IBMUploadTemp and 57000 exist on GLIBMPlan.
Here is my query any ideas on how to speed it up?
UPDATE GLIBMPlan INNER JOIN IBMUploadTemp ON (GLIBMPlan.FY = IBMUploadTemp.Period_Year) AND (GLIBMPlan.PERIOD = IBMUploadTemp.Period_Num) AND (GLIBMPlan.Channel = IBMUploadTemp.Channel) AND (GLIBMPlan.ACCOUNT = IBMUploadTemp.Account) AND (GLIBMPlan.STATE = IBMUploadTemp.State) AND (GLIBMPlan.PGCODE = IBMUploadTemp.PGCode) AND (GLIBMPlan.Brand = IBMUploadTemp.Brand) AND (GLIBMPlan.ITEM = IBMUploadTemp.Item) SET GLIBMPlan.Cases = [IBMUploadTemp]![SumOfCases], GLIBMPlan.AMT = [IBMUploadTemp]![AMT];
I have built the table IBMUploadTemp in order to facilitate the update.
I also hav an append query that I use to append records that do not exist on GLIBMPlan I havn't tested that yet but may have similar problems (code follows
INSERT INTO GLIBMPlan ( ITEM, DESCR, Brand, PGCODE, PROMGRP, PACKSIZE, STATE, Cases, LD, FY, PeriodName, PERIOD, ACCOUNT, Channel, AMT )
SELECT AppendIBMUploadSelectUnion.Item, AppendIBMUploadSelectUnion.Descr, AppendIBMUploadSelectUnion.Brand, AppendIBMUploadSelectUnion.PGCode, AppendIBMUploadSelectUnion.PromoGroup, AppendIBMUploadSelectUnion.Packsize, AppendIBMUploadSelectUnion.State, Sum(AppendIBMUploadSelectUnion.SumOfCases) AS SumOfSumOfCases, AppendIBMUploadSelectUnion.LD, AppendIBMUploadSelectUnion.Period_Year, AppendIBMUploadSelectUnion.Period_Name, AppendIBMUploadSelectUnion.Period_Num, AppendIBMUploadSelectUnion.Account, AppendIBMUploadSelectUnion.Channel, Sum(AppendIBMUploadSelectUnion.AMT) AS SumOfAMT
FROM AppendIBMUploadSelectUnion LEFT JOIN GLIBMPlan ON (AppendIBMUploadSelectUnion.Channel = GLIBMPlan.Channel) AND (AppendIBMUploadSelectUnion.Period_Year = GLIBMPlan.FY) AND (AppendIBMUploadSelectUnion.Period_Num = GLIBMPlan.PERIOD) AND (AppendIBMUploadSelectUnion.Account = GLIBMPlan.ACCOUNT) AND (AppendIBMUploadSelectUnion.State = GLIBMPlan.STATE) AND (AppendIBMUploadSelectUnion.PGCode = GLIBMPlan.PGCODE) AND (AppendIBMUploadSelectUnion.Brand = GLIBMPlan.Brand) AND (AppendIBMUploadSelectUnion.Item = GLIBMPlan.ITEM)
GROUP BY AppendIBMUploadSelectUnion.Item, AppendIBMUploadSelectUnion.Descr, AppendIBMUploadSelectUnion.Brand, AppendIBMUploadSelectUnion.PGCode, AppendIBMUploadSelectUnion.PromoGroup, AppendIBMUploadSelectUnion.Packsize, AppendIBMUploadSelectUnion.State, AppendIBMUploadSelectUnion.LD, AppendIBMUploadSelectUnion.Period_Year, AppendIBMUploadSelectUnion.Period_Name, AppendIBMUploadSelectUnion.Period_Num, AppendIBMUploadSelectUnion.Account, AppendIBMUploadSelectUnion.Channel, GLIBMPlan.Channel, GLIBMPlan.ITEM, GLIBMPlan.Brand, GLIBMPlan.PGCODE, GLIBMPlan.ACCOUNT, GLIBMPlan.STATE, GLIBMPlan.FY, GLIBMPlan.PERIOD
HAVING (((GLIBMPlan.Channel) Is Null) AND ((GLIBMPlan.ITEM) Is Null) AND ((GLIBMPlan.Brand) Is Null) AND ((GLIBMPlan.PGCODE) Is Null) AND ((GLIBMPlan.ACCOUNT) Is Null) AND ((GLIBMPlan.STATE) Is Null) AND ((GLIBMPlan.FY) Is Null) AND ((GLIBMPlan.PERIOD) Is Null));
thanks in advance