Limit pada SQL Server : Advanced 1


Pendahuluan

Melanjutkan pembahasan mengenai penerapan limit pada SQL Server, saya sudah coba gali lebih dalam, dan akan saya coba share ilmu yang sudah saya dapat.

Isi

Pada artikel saya yang sebelumnya, sudah coba saya jelaskan fungsi limit MySql dan cara penerapannya pada SQL Server, bisa diakses pada link berikut: https://andreastjong.wordpress.com/2008/09/20/limit-pada-sql-server/. Contoh yang saya berikan pada artikel sebelumnya hanya dapat digunakan apabila table tersebut hanya memiliki satu buah PK, dengan tipe alphanumeric. Pada kasus lainnya dimana pada satu table terdapat banyak PK, atau PK bukan bertipe alphanumeric, harus ada sedikit modifikasi pada cara yang saya berikan.

1. Table mempunyai 1 PK bertipe alphanumeric

Select TOP OFFSET
From Tablex
Where PK not in
(
Select TOP START PK
From Tablex
)

2. Table Mempunyai banyak PK

Karena function IN dan NOT IN hanya bisa mengecek satu field saja, maka ini menjadi sebuah permasalahan baru. Bagaimana menerapkan query seperti di atas? Salah satu caranya adalah dengan menggunakan funcrion CAST dan +, contoh:

Select TOP OFFSET
From Tablex
Where Cast(PK1 as varchar(10))+Cast(PK2 as varchar(10))
NOT IN
(
Select TOP START Cast(PK1 as varchar(10))+Cast(PK2 as varchar(10))
From Tablex
)

Perbesar ukuran Casting anda sesuai dengan keperluan saja.

3. Table tidak mempunyai PK

Kasus seperti ini sangatlah tidak diharapkan terjadi. Untuk kasus seperti ini, anda dapat menggunakan cara pada kasus2 dengan meng-casting satu persatu field yang ada. Hal ini perlu dilakukan untuk menghindari adanya data yang hilang saat proses terjadi.

Secara keseluruhan dengan menggunakan cara di atas dapat menyelesaikan permasalahan yang anda hadapi, tetapi cara tersebut mempunyai efek samping. Karena adanya perbandingan antara parent query dengan subquery menyebabkan workload yang tinggi. Terlebih lagi apabila anda ingin mencari record yang mendekati akhir row.

To be continued..

Advertisement

Limit pada SQL Server


Pendahuluan

Artikel ini saya buat sebagai rangkuman diskusi-diskusi dari berbagai community yang telah saya lakukan bersama dengan teman-teman saya, mengenai fungsi limit pada MySql yang tidak terdapat pada SQL Server.

Isi

Bagi anda yang sudah sering membangun website dengan menggunakan MySql sebagai DBMS-nya pasti anda sudah mengenal fungsi limit dengan baik. Biasanya fungsi limit ini akan anda gunakan untuk membantu anda dalam hal paging halaman website anda. Lupakan saja mengenai paging file, karena pada artikel ini tidak akan disinggung sedikit pun mengenai hal tersebut, dan bagi anda yang belum mengetahui fungsi limit itu seperti apa, tenang saja, saya akan berusaha menjelaskan mengenai fungsi ini sesingkat dan sejelas mungkin.

1. Fungsi Limit di MySql

Anggap kita punya table “x” dengan isi record, sebagai berikut:

Code Name
1 One Piece
2 Doraemon
3 Naruto
4 Dragon Ball
5 Mar
6 Kunimitsu
7 Slam Dunk
8 Ranma
9 Yakitate Japan
10 Yuyuhakuso

Coba ketikkan pada MySql editor anda:

select *
from x
limit 2,5

Output-nya adalah sebagai berikut :

Code Name
1 3 Naruto
2 4 Dragon Ball
3 5 Mar
4 6 Kunimitsu
5 7 Slam Dunk

Ya, benar sekali, memang fungsi limit hanyalah sesimple itu.

2. Limit pada SQL Server

Sekarang bagaimana caranya menerapkan fungsi limit pada SQL Server? Fungsi limit pada Sql Server tidaklah build-in. Cara yang paling mudah adalah dengan menerapkan fungsi TOP. Contoh :

Select TOP 5 *
From x
where code NOT IN
(
Select TOP 2 code
From x
)

OUTPUT-nya akan sama dengan contoh limit diatas.

Demikian penjelasan singkat dari saya.

To be continued: https://andreastjong.wordpress.com/2008/09/20/limit-pada-sql-server-advanced-1