Indahnya berbagi, sebaik-baik manusia adalah manusia yang bermanfaat bagi orang lain..

Pengenalan Index pada Database (for dummies)

Pengenalan Index pada Database (for dummies)

Apa sih index dalam basis data? sebenernya sederhana saja, yaitu untuk meningkatkan kecepatan dalam meretrieve data. Ketika kita memiliki basis data yang tidak terlalu banyak record, mungkin penggunaan index pada basis data tidak akan terlalu terasa. Berbeda ketika record data yang ada dalam basis data kita sangat banyak. Bisa jadi waktu yang dibutuhkan untuk meretrieve data nantinya memiliki response time yang lama. Sebagai contoh, beberapa bulan kebelakang ini saya sedang melakukan analisa terhadap sebuah database yang cukup kompleks. Kebetulan jumlah record data yang ada bisa sampai ratusan ribu records. Ketika melakukan sebuah query yang meretrieve data dari lima buah table sekaligus, response time yang didapat dari hasil query tersebut bisa sampai 30 detik. Bayangkan..bagaimana bila user anda harus menunggu 30 detik? bisa-bisa mereka membanting layar PC atau laptopnya..haha lebay

Berangkat dari masalah di atas, akhirnya saya berimajinasi untuk melakukan index pada basis data. Lalu pertanyaannya adalah apakah dengan melakukan index permasalahan di atas bisa selesai? Melirik kepada definisi sederhana saya di atas, indexing ada untuk meningkatkan kecepatan dalam meretrieve data. Ya benar, meningkatkan kecepatan dalam meretrieve data. Analoginya seperti sebuah buku, bila kita mencari sebuah kata dalam buku pasti akan sulit atau melelahkan bila cara kita mencarinya adalah melihat halaman pada buku satu per satu. Tetapi akan berbeda bila kita mencari kata tersebut pada index sebuah buku. Kita akan lebih cepat menemukan kata tersebut dengan melihat halaman yang diberikan pada index. Konsep tersebut bisa kita samakan dengan istilah index pada basis data. Alhasil, setelah melakukan index pada basis data, response time pada query yang sama dengan sebelumnya berubah dari 30 detik menjadi 2 detik!! EUREKA!!

OK, kita akan bahas beberapa syntax SQL untuk melakukan index. here we go..

  • Membuat Index

CREATE INDEX nama_indeks ON nama_tabel(nama_atribut) ;

  • Membuat Index dengan Banyak Atribut

CREATE INDEX nama_indeks ON nama_tabel(nama_atribut, nama_atribut) ;

  • Menghapus Index

DROP INDEX nama_indeks ON nama_tabel ;

Referensi:
http://laluirfan.web.ugm.ac.id/?p=249

http://www.interspire.com/content/2006/02/15/introduction-to-database-indexes/

June 13, 2012 2 comments Read More
Migrasi data dari DBMS MySQL ke dalam Microsoft SQL Server

Migrasi data dari DBMS MySQL ke dalam Microsoft SQL Server

Sebelumnya gw selalu berpikir kalau kita mau mindahin atau migrasi data dari suatu DBMS ke DBMS lainnya itu semudah makan coklat. Tapi sayangnya gw salah menduga. Selalu muncul pesan error setiap kali gw extract data dari hasil dumping sql versi DBMS sebelumnya. Sampe akhirnya gw nyerah(but it’s not the end ) dan nyoba nyari shortcut yang lebih mudah via mbah gw google. Sampe akhirnya gw nemu trick di bawah ini :

  1. Pertama kita harus install dulu ODBC MySQL. Klo lo belum pernah install sebelumnya, silahkan download dulu di link berikut ini.
  2. Setelah lo download dan install ODBCnya, kita coba configurasi ODBC MySQLnya dulu buat menyesuaikan dengan kondisi DBMS MySQL yang sudah ada
  3. Untuk Sistem Operasi Windows Seven, lo bisa buka di Control Panel >> Administrative Tools >> Data Sources(ODBC). Setelah itu kita masuk ke dalam tab System DSN untuk melakukan configurasi
  4. Bila kondisi kita belum memiliki configurasi ODBC sebelumnya, kita bisa add terlebih dahulu, sehingga muncul tampilan seperti berikut
  5. Kita bisa lakukan configurasi seperti gambar di atas. Value yang diisikan di form tersebut disesuaikan dengan kondisi DBMS MySQL kita sebelumnya. Bila sudah, kita bisa cek apakah ODBC MySQL sudah tersambung atau belum dengan cara click button Test.

Setelah kita melakukan installasi dan configurasi ODBC, maka kita bisa memanfaatkan ODBC tersebut sebagai penghubung MySQL yang kita punya dengan database baru di SQL Server yang nanti akan kita buat. Berikut merupakan langkah selanjutnya.

  1. Masuk ke dalam aplikasi SQL Server Management Studio
  2. Masukkan query berikut
  3. EXEC master.dbo.sp_addlinkedserver 
    @server = N'MYSQL', 
    @srvproduct=N'MySQL', 
    @provider=N'MSDASQL', 
    @provstr=N'DRIVER={MySQL ODBC 5.1 Driver}; SERVER=localhost; _
    	DATABASE=pims_cnooc; USER=root; PASSWORD=; OPTION=3'
  4. Bila query di atas berhasil di eksekusi, maka kita bisa melihat bahwa SQL Server kita sudah terhubung dengan MySQL
  5. Bila SQL Server sudah terhubung dengan MySQL, langkah terakhir adalah lakukan export table pada database yang ada di MySQL ke dalam SQL Server dengan query seperti berikut :
  6. SELECT * INTO databasetes.dbo.tabeltes
    FROM openquery(MYSQL, 'SELECT * FROM pims_cnooc.pipeline')

    Sebagai keterangan, databasetes merupakan data baru yang kita buat di DBMS SQL Server, tabeltes merupakan nama tabel yang akan kita buat, pims_cnooc merupakan database yang berada pada DBMS MySQL, dan pipeline merupakan tabel yang berada pada database pims_cnooc. Ingat, kita tidak perlu membuat terlebih dahulu tabel yang ada di databasetes, karena SQL Server akan langsung CREATE tabel baru secara otomatis. Perlu di ingat juga bahwa cara ini dilakukan sebanyak jumlah tabel yang ada di database pims_cnooc yang akan kita pindahkan ke dalam database baru di SQL Server.

Semoga berkenan
Source dari sini.

June 13, 2012 0 comments Read More
Error string or binary data would be truncated di SQL Server

Error string or binary data would be truncated di SQL Server

well, ini post pertama gw di blog kampus..jadi terpaksa postingnya agak berhubungan dengan jurusan gw sekarang di kampus..hhe
Baru-baru ini gw ketemu error ‘string or binary data would be truncated’ pada saat gw melakukan query INSERT data di SQL Server. Pada saat gw melakukan INSERT ternyata malah muncul message kayak gini :

Msg 8152, Level 16, State 14, Line 1

String or binary data would be truncated.

The statement has been terminated.

Ini adalah error yang ga pernah gw alamin sebelumnya di DBMS manapun pada saat melakukan query INSERT (atau memang gw nya aja yang cupu baru tau ya? hehe). But, apapun alasannya gw pengen share aja conclusion dari error tersebut. Hasil ini gw dapet setelah gw coba googling. Berikut langkah-langkah yang gw lakuin untuk mengatasi error tersebut :

  1. Masukkan query berikut ke dalam SQL Server
  2. SET ANSI_WARNINGS OFF

    GO

  3. Masukkan query INSERT yang udah kita buat sebelumnya
  4. INSERT INTO dta_pipelinepigging(PipelinePiggingID, PipelineName, PiggingDate, PigType, PigTypeNote, LaunchHour, ArrivalHour, DurationTime, Performance, Debris_Barrel, Remarks, Report) VALUES ('275', '3', '2009-12-11 00:00:00', '19', 'Foam Pig', '2009-12-11 16:00:00', '0000-00-00 00:00:00', '', '', '', 'Pig was destroyted', '2nd Pig');
    INSERT INTO dta_pipelinepigging(PipelinePiggingID, PipelineName, PiggingDate, PigType, PigTypeNote, LaunchHour, ArrivalHour, DurationTime, Performance, Debris_Barrel, Remarks, Report) VALUES ('276', '3', '2009-12-11 00:00:00', '19', 'Foam Pig', '2009-12-11 08:00:00', '0000-00-00 00:00:00', '', '100%', 'none', 'Pig arrived without detected by pig signal', '3rd pig');
    INSERT INTO dta_pipelinepigging(PipelinePiggingID, PipelineName, PiggingDate, PigType, PigTypeNote, LaunchHour, ArrivalHour, DurationTime, Performance, Debris_Barrel, Remarks, Report) VALUES ('277', '3', '2010-04-11 00:00:00', '19', 'Foam Pig', '2010-04-11 08:00:00', '2010-04-11 15:00:00', '7 hours', '100%', '0', 'Cleaning pipeline', '');

  5. Masukkan query berikut ke dalam SQL Server
  6. SET ANSI_WARNINGS ON

    GO

Alhasil dengan langkah sederhana itu, error yang gw alamin sebelumnya udah ga muncul pada saat INSERT data. Selamat mencoba !

SET ANSI_WARNINGS OFF

GO

SET ANSI_WARNINGS OFF

GO

 

June 13, 2012 0 comments Read More