SELECT SINGLE or SELECT up TO 1 Rows ?

Dear My Blog,

Hari ini aku kembali membuka catatan belajarku terkait bab teknik pengambilan data di ABAP. Akhirnya aku menemui sebuah pembahasan mengenai SELECT SINGLE. Pikiranku kembali ke masa-masa saat pertama kali aku mengenal ABAP. Saat itu pernah terlontar pertanyaan di kepalaku : Apa bedanya menggunakan SELECT SINGLE dengan SELECT UP TO 1 ROWS ? Apakah hanya sekedar perbedaan semantik ataukah terkait juga dengan performance?

Saat ini kembali membuka note mengenai SELECT SINGLE dan UP TO n ROWs, beserta kondisi yang cocok untuk menggunakan kedua jenis SELECT tersebut.

Select Single * will pickup only one matching record from the database into the buffer, and returns the same to the internal table. Select upto 1 rows will pickup all the records matching the condition into the buffer, but return the top record to the internal table.

The ‘SELECT SINGLE’ statement selects the first row in the database that it finds that fulfils the ‘WHERE’ clause If this results in multiple records then only the first one will be returned and therefore may not be unique. Mainly:  to read data from

The ‘SELECT …. UP TO 1 ROWS’ statement is subtly different. The database selects all of the relevant records that are defined by the WHERE clause, applies any aggregate, ordering or grouping functions to them and then returns the first record of the result set. Mainly: to check if entries exist.

Apakah ada hubungannya dengan performance?

Ada statement yang menyatkan : “According to SAP Performance course the SELECT UP TO 1 ROWS is faster than SELECT SINGLE”. Benarkah yang demikian ini. Tergantung..  Apakah dalam SELECT SINGLE tersebut, disertakan semua PRIMARY KEYS yang ada atau tidak.

SELECT SINGLE  adalah sebuah konstruksi yang di desain untuk membaca database records dengan primary key. Jika dalam kondisi primary key tidak ada, akhirnya select tersebut melakukan pencarian sekuensial, sedangkan SELECT UP TO 1 ROWs berjalan dengan menganggap bahwa tidak ada primary keys yang disediakan dan akan mencoba untuk menemukan indeks yang paling cocok.

Trus kesimpulannya bagaimana?

Hmm,, kesimpulan : SELECT SINGLE dan SELECT UP to 1 ROWS itu sebenarnya mirip / identik. Gunakan sesuai dengan kondisi dan situasi yang dihadapi.

Lantas manakah yang terbaik dalam performance? Keputusan ada di tangan anda. Cara terbaik untuk menentukannya adalah dengan melakukan SQL TRACE atau runtime analysis. Jangan lupa melakukan SELECT dengan menyertakan primary keys dan kaidah-kaidah performance tuning yang baik dan benar..🙂

Ada tambahan dari pembaca mungkin?

————————————————————

Source :

1. forums.sdn.sap.com

2. sap-img.com

3. Catetan belajar ku

2 Responses to “SELECT SINGLE or SELECT up TO 1 Rows ?”


  1. 1 Dominik Tylczyński March 15, 2012 at 3:11 pm

    My personal opinion is you should use SELECT SINGLE only if you specify full primary key in WHERE statement. Otherwise if you need only one row and full key can’t be specified use SELECT … UP TO 1 ROWS. That’s it – don’t bother with performance here.

    • 2 pragmanocache March 16, 2012 at 10:19 am

      Thank you for you opinion, sir.. Iam a newbie in abap programming.. I’ve spend a long time for comparing this retrieving method.. i see SELECT SINGLE or SELECT up TO 1 Rows, they are identical🙂 and it look the using of them is depending in our case on retrieving data.. You right, they don’t bother with performance.. *Sorry my English is not GOOD🙂


Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s




My Archives


%d bloggers like this: