2006 Jul 28 8:49 AM
what is the difference between hashed & sorted internal
tables?
what is the difference between standard and sorted
internal tables? (in performance wise)
what is a binary search ? and how it is useful in a sorted internal table?
what is the difference between hashed & sorted internal
tables?
what is the difference between standard and sorted
internal tables? (in performance wise)
what is a binary search ? and how it is useful in a sorted internal table?
2006 Jul 28 8:50 AM
http://help.sap.com/saphelp_erp2005/helpdata/en/fc/eb35de358411d1829f0000e829fbfe/frameset.htm
/people/harry.dietz/blog/2005/10/28/performance-improvement-hints-3-internal-table--fill-and-read
Standard Internal Tables
Standard tables have a linear index. You can access them using either the index or the key. If you use the key, the response time is in linear relationship to the number of table entries. The key of a standard table is always non-unique, and you may not include any specification for the uniqueness in the table definition.
This table type is particularly appropriate if you want to address individual table entries using the index. This is the quickest way to access table entries. To fill a standard table, append lines using the (APPEND) statement. You should read, modify and delete lines by referring to the index (INDEX option with the relevant ABAP command). The response time for accessing a standard table is in linear relation to the number of table entries. If you need to use key access, standard tables are appropriate if you can fill and process the table in separate steps. For example, you can fill a standard table by appending records and then sort it. If you then use key access with the binary search option (BINARY), the response time is in logarithmic relation to
the number of table entries.
Sorted Internal Tables
Sorted tables are always saved correctly sorted by key. They also have a linear key, and, like standard tables, you can access them using either the table index or the key. When you use the key, the response time is in logarithmic relationship to the number of table entries, since the system uses a binary search. The key of a sorted table can be either unique, or non-unique, and you must specify either UNIQUE or NON-UNIQUE in the table definition. Standard tables and sorted tables both belong to the generic group index tables.
This table type is particularly suitable if you want the table to be sorted while you are still adding entries to it. You fill the table using the (INSERT) statement, according to the sort sequence defined in the table key. Table entries that do not fit are recognised before they are inserted. The response time for access using the key is in logarithmic relation to the number of
table entries, since the system automatically uses a binary search. Sorted tables are appropriate for partially sequential processing in a LOOP, as long as the WHERE condition contains the beginning of the table key.
Hashed Internal Tables
Hashes tables have no internal linear index. You can only access hashed tables by specifying the key. The response time is constant, regardless of the number of table entries, since the search uses a hash algorithm. The key of a hashed table must be unique, and you must specify UNIQUE in the table definition.
This table type is particularly suitable if you want mainly to use key access for table entries. You cannot access hashed tables using the index. When you use key access, the response time remains constant, regardless of the number of table entries. As with database tables, the key of a hashed table is always unique. Hashed tables are therefore a useful way of constructing and
using internal tables that are similar to database tables.
the prerequisite for a binary search on an internal table is it should be sorted.
READ TABLE itab WITH KEY k1 = v1 ... kn = vn
[BINARY SEARCH] [additions].
Effect
The system evaluates the specified key to identify the correct line. If the type of a value is not compatible with the type of the corresponding key field, the system uses MOVE logic to convert the value into the type of the component before reading the table. This is an asymmetric comparison logic, in which the component type takes precedence over the value type.
The way in which the system looks for an entry in the table depends on its table type. The system optimizeds the key access whenever possible
/people/harry.dietz/blog/2005/10/28/performance-improvement-hints-3-internal-table--fill-and-read
Standard Internal Tables
SORTED TABLE:
If the specified key fields form a left-justified extract of the table key or are identical with the entire table key, the search is binary, otherwise sequential.
HOPE THIS HELPS,
2006 Jul 28 8:56 AM
2006 Jul 28 9:04 AM
Hi,
Reading a standard table will be in a sequential manner meaning it would go through your itab row by row. Sorted table will be read using binary search meaning it would 'cut' your record by half until it finds what you are looking for. Hashed table on the other hand needs a unique key since it is always used for single entry reads and by using hash algorithm.
Hope this helps...
P.S. Please award points for useful answers.
2006 Jul 28 9:42 AM
Hi,
/people/harry.dietz/blog/2005/10/28/performance-improvement-hints-3-internal-table--fill-and-read
http://help.sap.com/saphelp_erp2005/helpdata/en/fc/eb35de358411d1829f0000e829fbfe/frameset.htm
If you have only full key access, use hashed table.
If you also have partial key access (e.g. loop where), use sorted table.
Mostly used? Standard table...
Hash and sort algorithm cost a little bit in creation - if you add line by line and just make one read (for every line) later, than you have a lot of overhead. Then standard table, one sort and read with binary search is faster.
When you make table fills (select into table) and have a lot of accesses (on a hugh table), then hashed should be in his best.
Rgds,
Prakash
2006 Jul 28 12:18 PM
hi,
internal tables are of 3 types,
1.standard tables
2.indexed tables(sorted tables)
3.hashed tables
in the standard table there is a sequential access while searching for a record, or to append a record,
where as in the indexed tables, the access is using the index number,
where as for the hashed tables, the access in using the hashkey,but we hardly use this kind of table,
standard tables are more frequently used
-
read itab with key carrid = 'AA'.
is a sequential search
read itab with key carrid = 'AA' binary search.
is a two-way search,it searches the desired key
best of luck,
regards,
kcc
| User | Count |
|---|---|
| 3 | |
| 2 | |
| 2 | |
| 1 | |
| 1 | |
| 1 | |
| 1 | |
| 1 | |
| 1 | |
| 1 |