"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""" SPEED BY DESIGN """""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""" PRODUCT : R:BASE VERSION : 3.1 CATEGORY : PERFORMANCE SUBCATEGORY : SPEED """""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""" Get top performance out of your R:BASE applications by building speed into your databases and programs. Efficient Memory System """"""""""""""""""""""" Read MEMORY.TXT, a file that came with your R:BASE program, to learn how to design an efficient memory management system. For example, to take full advantage of R:BASE 3.1's reduced memory requirements, use the memory that lies above the DOS limit of 640K (high memory). If you have a memory manager installed, R:BASE will use it. If you don't, use the memory manager HIMEM.SYS that's supplied with R:BASE. Learn what to do by reading MEMORY.TXT. DOS programs like R:BASE can't use extended or expanded RAM directly, so it's important to free up as much conventional memory as possible by using RVMX and moving drivers to high memory. If you have expanded memory, set the DOS environment variable RTVMCONV by using this DOS command: SET RTVMCONV=1,640 Upgrade EXPRESS Enhancements """"""""""""""""""""""""""""" Subscribe to Upgrade EXPRESS to ensure that you always have the latest version of R:BASE. Each new release has quality improvements. For example, the first release of Upgrade EXPRESS (3.1A) has four major speed improvements: an optimized query engine, faster report printing, an IHASH function to speed up searching on indexed TEXT columns, and enhanced commands that provide more productivity with less code. Efficient Databases & Indexes """"""""""""""""""""""""""""" A good relational database design is crucial to good performance. Refer to your manuals, previous R:BASE EXCHANGE (or Microrim ONLINE) issues, and outside sources to learn more about how to design good relational databases. Here are two tips: use the DOUBLE data type instead of NUMERIC, and keep names short (eight characters or less) and early-on unique. For example, put the number in the second position (V1TOT...V9TOT) instead of the last position (VTOT1...VTOT9). If you have Upgrade EXPRESS (R:BASE 3.1A or higher), use the new IHASH function to improve the search speed on indexed TEXT columns where the first two characters are not unique. For example, on part numbers (AB- 102, AB-301, and so on). Less Code, Smart EEPs, & SQL """""""""""""""""""""""""""" Add speed by reducing the quantity of code. Often you can do what you need to do in SQL with fewer commands. For example, Union Carbide converted a very large (50,000 lines of code) safety tracking application from R:BASE 2.11 to R:BASE 3.1, and now the R:BASE 3.1 application runs three times faster overall than did the 2.11 application. The most significant factor was full SQL implementation. Often a single SELECT command can replace an entire program-- especially when using a SELECT clause in the INSERT command. Make entry/exit procedures (EEPs) smart. For examples of smart EEPs, look at "Put More Pop in Your Pop-ups" and "Add a Value to a Pop-up Menu." Also look at "Browse or Edit Old Rows While Entering New Rows in a Form" to see how to make an EEP execute only if the user presses [F2]. Modify your programs to take advantage of new features in R:BASE 3.1A Check your DECLARE CURSOR Structures. An incorrect structure can take longer to execute even though it works. For example, never put a DECLARE CURSOR statement inside a WHILE loop; use the OPEN command in the WHILE loop but put the DECLARE CURSOR command outside the loop. See examples of the correct structure in "Row by Row in R:BASE 3.0 Using DECLARE CURSOR" in the March/April 1990 issue or "An R:BASE Expert System" in the March/April 1991 issue. Enclose the entire WHERE clause in parentheses. This will help R:BASE skip a step in interpreting the command and will improve performance over the long haul. Innovative Solutions """""""""""""""""""" Develop innovative solutions, experiment, and be flexible. For example, if you need a simple form without menus, it might be better to lay down a background screen with DISPLAY, and then use FILLIN to open a portal to a table instead of using an R:BASE form. To learn how, see "Open a Data Entry Portal in a Form to Load Another Table" in the March/April 1991 issue or "Set Date & Time to Start Program" in this issue of Microrim ONLINE. Combine all your software programs and R:BASE applications and put them on the R:BASE Application menu to save you time and trouble. See "Run All Your Software from an R:BASE Menu" for an example implementation. Find two ways to do the same thing and then experiment to see which one is faster. By staying flexible and being willing to try new things and adapt to new ways of thinking, you'll be able to modernize your application and database designs to add the speed you need. Invest the time and effort it takes to learn and apply new programming techniques like SQL, new R:BASE program features, and new memory power, and you'll be rewarded with faster speed.