I thank everyone for the response to my email. This should give me help i 
needed. 

On 2 Mar 2004 at 22:44, A. Razzak Memon wrote:

> 
> At 03:48 PM 3/2/2004 -0800, Victor Timmons wrote:
> 
> >I would like some tips on how to speedup rbase when it
> >running on a network.
> 
> 
> Victor,
> 
> Here are a few more tips in addition to the suggestions
> posted earlier by fellow R:BASE users/developers:
> 
> --
> 01. Use the most current version of R:BASE
> --  (I know you are using the latest & greatest version!)
> 
> R:BASE Technologies is continually making speed improvements,
> and each new release is faster than the previous one. For
> example, building indexes in R:BASE 6.5/7.x is significantly
> faster than in previous versions.
> 
> You can even PACK the INDEXes faster in 6.5++, even in a
> Multi-User environment.
> 
>          PACK INDEX
>          or
>          PACK INDEX FOR TableName
> 
> --
> 02. Think globally instead of row by row
> --
> This is one of the best ways to achieve some significant speed
> improvements. Instead of doing row-by-row processing using a
> DECLARE CURSOR, try using a single UPDATE or INSERT command,
> which will take advantage of the SQL select capabilities of
> R:BASE.
> 
> For example, suppose you want to create a table to hold
> information about how many of each product a customer has
> purchased. The most logical approach is to set up a cursor
> to go through the detail table and count the rows for each
> customer/product combination and then insert that data into
> the new table. On a table with 3500 rows, processing all
> the rows may take few minutes. By replacing the DECLARE
> CURSOR loop with a single insert command, the time required
> to process all the rows may take 75% less.
> 
> Compare the two pieces of code:
> 
> DECLARE c1 CURSOR FOR SELECT CustID,PartNo FROM CPProdDet +
> GROUP BY CustID,PartNo
>   OPEN c1
>     FETCH c1 INTO +
>     vCustID INDIC ivCustID, +
>     vPartNo INDIC ivPartNo
>       WHILE SQLCODE < > 100 THEN
>         SELECT COUNT(*) INTO vCount FROM CPProdDet WHERE +
>          CustID = .vCustID AND PartNo =.vPartNo
>         INSERT INTO CustProd (CustID,PartNo,Copies) VALUES +
>         (.vCustID,.vPartNo,.vCount)
>         FETCH c1 INTO +
>         vCustID INDIC ivCustID, +
>         vPartNo INDIC ivPartNo
>       ENDWHILE
>       DROP CURSOR c1
> 
>       vs.
> 
>       INSERT INTO CustProd (CustID,PartNo,Copies) +
>       SELECT CustID,PartNo,Count(*) +
>       FROM CPProdDet GROUP BY CustID,PartNo
> 
> --
> 03. Be Creative
> --
> R:BASE almost always offers two or more ways of doing something.
> Look for an alternative method for accomplishing a task - it
> might just be considerably faster.
> 
> --
> 04. Change the environment
> --
> The R:BASE environment settings that have the most effect on
> performance are SET MESSAGES.
> 
> SET MESSAGES OFF eliminates the time required for screen display
> of messages. This is particularly noticeable if you are doing
> repetitive UPDATE or INSERT commands.
> 
> --
> 05. Reduce Number of Expressions in Reports
> --
> Because all report expressions are processed for each row of
> data read from the reports driving table or view, reducing the
> number of expressions in a report increases the printing speed
> of a report.
> 
> --
> 06. Abbreviate commands to four characters
> --
> R:BASE parses command lines into 4-byte tokens - the fewer
> tokens to read, the faster the command executes.
> 
> --
> 07. Combine commands whenever possible
> --
> Many R:BASE commands allow access to more than one column or
> variable and don't require using separate commands for each.
> This reduces the number of times R:BASE must parse and read a
> command. The fewer commands to read, the faster R:BASE executes.
> 
> --
> 08. Use correlated sub-selects or multi-table selects instead
> --  of sub-selects
> 
> A multi-table select uses indexes to join the tables. A correlated
> sub-select uses indexes to restrict the list of values to be
> compared within the sub-select. A plain sub-select will not use
> indexes. Each row of data from the main query must be compared to
> every row selected by the sub-select.
> 
> --
> 09. Try using manual optimization (MANOPT)
> --
> With MANOPT set ON, R:BASE joins tables in the order they are
> listed in the FROM clause of the SELECT command. The R:BASE
> optimizer generally picks the most efficient way to join the
> tables. You have the option in R:BASE of manually specifying
> the order by using the MANOPT setting. Doing so might improve
> the performance of your multi-table selects and views.
> 
> --
> 10. Practice smart indexing
> --
> In a WHERE clause, R:BASE uses only one index (except when
> joining tables). If more than one indexed column is referenced
> in a WHERE clause, R:BASE looks for the one that places the
> greatest restriction on the number of rows returned. It first
> looks for an indexed column using =, then checks for IS NULL,
> and finally looks at BETWEEN. It uses the first index it finds
> with the most restrictive operator.
> 
> --
> 11. Review your code - there is ALWAYS room for improvement!
> --
> Did you ever write a piece of code three months ago, six months
> ago, or perhaps longer ago still and then realize that you could
> have done a better job?  As you learn more about R:BASE, your
> data, and how people are using the database and your application
> when you go live, you'll easily recognize areas in your code you
> can modify for performance improvements. You'll want to incorporate
> new techniques and new features from the current version of R:BASE.
> 
> Hope that helps!
> 
> Very Best R:egards,
> 
> Razzak.
> 
> 



Victor Timmons  
Tiz's Door Sales, Inc
425-258-2391

Reply via email to