Application Development Discussions
Join the discussions or start your own on all things application development, including tools and APIs, programming models, and keeping your skills sharp.
Showing results for 
Search instead for 
Did you mean: 


Former Member
0 Kudos

difference b/w indexing & Buffering.


Former Member
0 Kudos

Hi Bhavesh,

INDEXING - Indexing means a TABLE is created with all the UNIQUE KEYS to uniquely Identify the Records. An Index is a copy of database table having few numbers of fields. This copy is always in sorted form. As we know, Sorted data would always have a speed access from a database table. Hence, we use an index for the table while reading the database records. Index also contains a pointer pointing towards actual database table so that it can access fields that are not contained in the Index.

There are 2 types of INDEXES:

1. Primary Index

2. Secondary Index


BUFFERING - Buffering temporarily stores the Recently accessed or Most Commonly accessed RECORDS.

We have 3 types of buffering:

1. Single-record buffering

2. Generic area buffering

3. Full buffering

1. Single-Record Buffering:

For large tables where there are frequent single-record accesses (using SELECT SINGLE ...). The size of the records being accessed should be between 100-200 KB.

For comparatively small tables for which the access range is large, it is normally advisable to opt for full buffering. Only one

database access is required to load such a table for full buffering, while single-record buffering calls for a very large number of table accesses.

2. Generic Buffering:

A table should be buffered generically if usually only certain areas of the table are required. The individual generic areas are treated like independent tables that are fully buffered. Refer also to the text on complete buffering.

he generic key area should be selected so that the generic areas are not too small to prevent too may generic areas being produced. If there are only a few records for each generic area, it is more efficient to use full buffering.

Generic buffering only makes sense if the table is accessed by a specified generic key. If, when an access takes place, a field of the generic key is not supplied with a value, the buffer is ignored and the records are read directly from the database.

Language-specific tables are an example of good use of generic buffering (with the language key field as generic key area).

3. Full Buffering:

For tables up to 30 KB in size. If a table is accessed frequently, but all accesses are read accesses, this value can be exceeded.

For larger tables where large numbers of records are frequently

accessed. However, if the application program is able to formulate an extremely selective WHERE condition using a database index, it may be advisable to dispense with full buffering.

For tables with frequent accesses to data not contained in the

table. Since all records are contained in the buffer, a quick

decision can be made as to whether or not the table contains a

record for a specific key.

Reward points if useful



Former Member
0 Kudos


An index is created to optimize the search of data in a table and buffering is used to made the table disponible in memory for a time.

You have to create index to tables that you access many times (an primary index is created with the table key fields). To create or look for indexes go to SE11 -> Goto -> Indexes.

And you have to use buffering in tables that is not updated constantly. To define a table to be bufferized go to SE11 -> Technical Settings.


Former Member
0 Kudos

The R/3 System manages and synchronizes the buffers on the individual application servers. If an application program accesses data of a table, the database interfaces determines whether this data lies in the buffer of the application server. If this is the case, the data is read directly from the buffer. If the data is not in the buffer of the application server, it is read directly from the database and loaded into the buffer. The buffer can therefore satisfy the next access to this data.

The buffering type determines which records of the table are loaded into the buffer of the application server when a record of the table is accessed. There are the following buffering types:

  • full buffering: When a record of the table is accessed, all the records of the table are loaded into the buffer.

  • generic buffering: When a record of the table is accessed, all the records whose left-justified part of the key is the same are loaded into the buffer.

  • single record buffering: Only the record that was accessed is loaded into the buffer.


An index can be used to speed up the selection of data records from a table.

An index can be considered to be a copy of a database table reduced to certain fields. The data is stored in sorted form in this copy. This sorting permits fast access to the records of the table (for example using a binary search). Not all of the fields of the table are contained in the index. The index also contains a pointer from the index entry to the corresponding table entry to permit all the field contents to be read.

hoping u got it..........


ankur sharma

Former Member
0 Kudos

hi check this..

indexing when the table had 20 records if you want to display the 4 th record then we use the index..and primary secondary indexes will be more useful at the fetching the data through the select statements

read table itab with index ...

buffering wil be done by the tables statement in the program.

if you want to get data from a table for 4 times if there is no buffer it will fetch the data from data base table for 4 times . if the buffer exists then it will hit the data base table once only and it will fetch the data for 3 times from the buffer will increases the performance of the program



Former Member
0 Kudos


thnx all