Using an index certainly speeds this up, but things are still kind of
slow -
80,000 records takes an hour or two.
A further speed up was acheived by using:
echo "update allpoly_att set age = $AGE, cover= $COVER where avicat
= $MYCAT" | db.execute
instead of two separate calls for both "age" and "cover".
What I would like to do is:
RET = echo "select age, cover from play_att where link_key = $MYCAT" |
db.select -c`
where RET will look something like "100|1002". I then use BASH to
string split RET and assign to AGE and COVER (both integers).
This would elliminate one database query and would speed things up
further.
But I can't figure out how to do this string-splitting in BASH!!
Cheers!
Craig
On Mon, 2004-10-11 at 02:52, Radim Blazek wrote:
On Thursday 07 October 2004 00:03, Craig Aumann wrote:
> The code is very simple:
>
>
> for MYCAT in `echo "select distinct avicat from
allpoly_att"|db.select
> -c`; do
> echo $MYCAT
> AGE=`echo "select age from play_att where link_key = $MYCAT" |
> db.select -c`
> COVER=`echo "select cover from play_att where link_key = $MYCAT"
|
> db.select -c`
>
> echo "update allpoly_att set age = $AGE where avicat = $MYCAT" |
> db.execute
> echo "update allpoly_att set cover = $COVER where avicat =
$MYCAT" |
> db.execute
> done
>
>
> Right now, it is doing about 2 updates per second - which is too
slow!
> Is the slowness caused by piping it through db.execute?
>
> Other suggestions for speeding this up?Postgres + index for link_key and avicat.
Radim