Showing posts with label Bahasa SQL. Show all posts
Showing posts with label Bahasa SQL. Show all posts

Mengecek duplikat data dengan SQL Query

senang sekali rasanya bisa menulis kembali dan sharing kepada teman teman, setelah sekian lama vakum akibat kesibukan. sebenarnya saat menulis ini pun sedang ada banyak project yang dikerjakan dan sangat melelahkan, untuk melepas kelelahan itulah saya ingin sedikit share agar saya juga bisa sedikit lebih rileks. oke langsung saja, kali ini saya akan membagikan tips bagaimana mengatasi jika ada duplikat data seperti hasil query dibawah ini :

langkah pertama kamu harus tahu dulu data mana saja yang duplikat datanya : contoh dibawah ini data yang duplikat adalah field journal_id sehingga saya menggunakan perintah sql sebagai berikut :

10 Tips SQL Mempercepat Akses Database


Tip pertama ini mungkin tampak biasa, tetapi pada kenyataannya sebagian besar masalah database berasal dari design struktur tabel yang buruk.
Sebagai contoh, saya telah melihat orang-orang menyimpan informasi seperti info client dan pembayaran info di column database yang sama. Ini bukan hal yang baik bagi database system dan developer yang akan bekerja menggunakannya.
Ketika akan membuat database, selalu simpan informasi berbeda di tabel yang berbeda, gunakan standar penamaan yang jelas dan gunakan primary key.
Source: http://www.simple-talk.com/sql/database-administration/ten-common-database-design-mistakes/

Tahu apa yang harus Anda optimasi
Jika Anda ingin mengoptimasi query tertentu, sangat penting bagi anda untuk bisa melihat informasi dari query yang anda jalankan. Gunakan perintah EXPLAIN, untuk mendapatkan informasi dari query yang anda jalankan, seperti yang ditunjukkan pada contoh di bawah ini:
EXPLAIN SELECT * FROM ref_table, table_lain WHERE ref_table.key_column = table_lain.column;
Source: http://dev.mysql.com/doc/refman/5.0/en/using-explain.html
Query tercepat… Adalah yang tidak pernah anda kirim
Setiap kali Anda mengirimkan query ke database, Anda akan menggunakan sumber daya server Anda. Inilah sebabnya, pada situs dengan traffic tinggi, hal terbaik yang dapat Anda lakukan untuk mempercepat database Anda adalah dengan cache queries.
Ada banyak solusi untuk menggunakan cache query pada server Anda. Berikut adalah salah satunya:
* AdoDB: AdoDB adalah library abstraksi database untuk PHP. Hal ini memungkinkan Anda untuk menggunakan sistem database pilihan Anda (MySQL, PostgreSQL, Interbase, dan lain sebagainya) dan dirancang untuk kecepatan. AdoDB sangat sederhana, namun memiliki sistem caching yang powerful. Dan juga, lisensi AdoDB di bawah BSD, yang berarti Anda dapat menggunakan dengan bebas pada proyek Anda. Sebuah lisensi LGPL juga tersedia untuk proyek-proyek komersial.
* Memcached: memcached adalah sistem caching memori terdistribusi yang sering dipakai untuk mempercepat website berbasis database dinamis dengan meringankan beban database.
* CSQL Cache: CSQL Cache adalah sebuah open-source data caching infrastruktur. Belum diuji secara pribadi, namun tampaknya bisa menjadi alat yang hebat.
Jangan Menampilkan yang tidak perlu
Yang sangat umum untuk mendapatkan data yang diinginkan adalah dengan menggunakan simbol *, yang akan mendapatkan semua kolom dari tabel yang diinginkan:
SELECT * FROM wp_posts;
Sebaliknya, Anda harus benar-benar hanya memilih kolom yang diinginkan, seperti ditunjukkan pada contoh di bawah ini. Pada situs yang sangat kecil dengan, katakanlah, satu pengunjung per menit, yang tidak akan membuat perbedaan. Tapi di situs seperti Tanyasaja.com, menghemat banyak proses untuk database.
SELECT judul, kutipan, pengarang FROM wp_posts;
Gunakan LIMIT
Ini sangat umum yang perlu Anda hanya mendapatkan jumlah record tertentu dari database Anda. Sebagai contoh, sebuah blog yang menampilkan sepuluh entri per halaman. Dalam hal ini, Anda harus benar-benar menggunakan parameter LIMIT, yang hanya menampilkan jumlah record yang diperlukan.
Tanpa LIMIT, jika tabel Anda memiliki 100.000 catatan berbeda, Anda akan ekstrak mereka semua, yang seharusnya tidak perlu dilakukan server Anda.
SELECT judul, kutipan, pengarang FROM wp_posts LIMIT 10;
Hindari queries dalam pengulangan
Bila menggunakan SQL bersama dengan bahasa pemrograman seperti PHP, dapat tergoda untuk menggunakan SQL queries dalam sebuah loop / pengulangan. Tapi hal ini seperti memukul database dengan query Anda.
Contoh ini menggambarkan seluruh masalah “queries dalam loop”:
foreach ($display_order as $id => $urut) (
$sql = “UPDATE SET kategori display_order = $ordinal WHERE id = $id”;
mysql_query ($sql);
)
Berikut adalah apa yang harus Anda lakukan sebagai gantinya:
UPDATE kategori
SET display_order = CASE id
WHEN 1 THEN 3
WHEN 2 THEN 4
WHEN 3 THEN 5
END
WHERE id IN (1,2,3)
Source: http://www.karlrixon.co.uk/articles/sql/update-multiple-rows-with-different-values-and-a-single-sql-query/
Gunakan JOIN bukannya subqueries
Sebagai seorang programmer, subqueries adalah sesuatu yang Anda bisa tergoda untuk menggunakan dan menyalahgunakannya. Subqueries, seperti yang ditunjukkan di bawah ini, dapat sangat berguna:
SELECT a.id,
(SELECT MAX (created)
FROM posts
WHERE author_id = a.id)
AS latest_post FROM authors a
Meskipun subqueries berguna, mereka dapat digantikan dengan JOIN, dan yang jelas akan lebih cepat untuk mengeksekusinya.
SELECT a.id, MAX (p.created) AS latest_post
FROM authors a
INNER JOIN posts p
ON (a.id = p.author_id)
GROUP BY a.id
Source: http://20bits.com/articles/10-tips-for-optimizing-mysql-queries-that-dont-suck/
Hati-hati ketika menggunakan wildcard
Wildcard sangat berguna karena mereka dapat menggantikan satu atau lebih karakter ketika mencari data dalam database. Saya tidak mengatakan bahwa Anda tidak boleh menggunakannya, tetapi sebaliknya, anda harus menggunakannya dengan hati-hati dan tidak menggunakan wildcard penuh ketika awalan atau postfix wildcard dapat melakukan pekerjaan yang sama.
Bahkan, melakukan pencarian wildcard penuh pada satu juta record pasti akan membunuh database Anda.
# Full wildcard
SELECT * FROM table WHERE COLUMN LIKE ‘%halo%’;
# Postfix wildcard
SELECT * FROM TABEL WHERE COLUMN LIKE ‘halo%’;
# Prefix wildcard
SELECT * FROM TABEL WHERE COLUMN LIKE ‘% hello’;
Source: http://hungred.com/useful-information/ways-optimize-sql-queries/
Gunakan UNION daripada OR
Contoh berikut ini menggunakan perintah OR untuk mendapatkan hasilnya:
SELECT * FROM a, b WHERE a.p = b.q OR a.x = b.y;
Pernyataan UNION memungkinkan Anda untuk menggabungkan hasil dari 2 atau lebih queries select. Contoh berikut akan mengembalikan hasil yang sama seperti perintah di atas, tetapi akan lebih cepat:
SELECT * FROM a, b WHERE a.p = b.q
UNION
SELECT * FROM a, b WHERE a.x = b.y
Source: http://www.bcarter.com/optimsql.htm
Menggunakan index
Index database mirip seperti indeks pencarian di perpustakaan: Mereka memungkinkan database untuk menemukan informasi yang diminta lebih cepat, seperti sebuah indeks perpustakaan akan memungkinkan seorang pembaca untuk menemukan apa yang mereka cari tanpa menghabiskan waktu.
Index dapat dibuat pada satu kolom atau kombinasi kolom dalam tabel database. Sebuah index tabel adalah struktur database yang mengatur nilai-nilai dari satu atau lebih kolom dalam tabel database dalam urutan tertentu.
Pertanyaan berikut ini akan membuat index pada Model kolom dari tabel Produk. Index disebut idxModel:
CREATE INDEX idxModel ON Product (Model);
Source: http://www.sql-tutorial.com/sql-indexes-sql-tutorial/

Data Manipulation Languange


Data manipulation Language atau DML adalah salah satu jenis bahasa SQL yang digunakan untuk memanipulasi database yang ada, atau dengan kata lain memanipulai table, view, procedure dan lain lain. Data Manipulation Languange terdiri dari perintah-perintah seperti insert, update, dan delete. sedangkan untuk perintah-perintah yang lain dikategorikan dalam perintah Data Definition Language dan Data Control Language.



Perintah dalam SQL Plus


SQL Plus adalah salah satu program yang digunakan untuk mengakses database oracle dengan bahasa structure query language atau yang lebih sering kita kenal dengan SQL. perintah perintah yang diketikan pada SQL plus umumnya sama saja dengan bahasa SQL umumnya yang digunakan untuk mengakses database. bahasa SQL sendiri ada tiga jenis yaitu Data Definition Language, Data Manipulation Language, dan Data Control Language.



Perintah Input data


Sudah lama rasanya saya tidak menulis untuk artikel bahasa SQL dan artikel saya mengenai bahasa SQL juga masih sedikit sekali dikarenakan keterbatasan waktu luang yang saya milki. kali ini saya ingin memposting artikel mengenai perintah memasukan data pada bahasa SQL. dalam mempraktekan perintah ini saya menggunakan SQL Plus, bagi yang belum mengenal SQL Plus silahkan baca mengenai artikel sebelumnya Mengenal SQL Plus.

untuk memasukan data pada bahasa SQL kita menggunakan perintah Insert , bentuk penulisan perintah ini adalah sebagai berikut :

insert into nama_tabel(field1, field2 ,..,field N) values ('isi field1','isi field2',...,'isi field ke N');

misalkan kita memiliki sebuah tabel yang bernama kategori dengan field id dan nama_kategori jika anda belum memiliki tabel tersebut silahkan anda membuat tabel baru dengan nama kategori , data yang akan dimasukan adalah 1 dan kesehatan maka bentuk penulisan perintah SQL nya adalah seperti dibawah ini :

insert into kategori(id,nama_kategori) values ( 1,'kesehatan);

jalankan perintah sql diatas dengan menekan enter pada sql plus dan lihat hasil data yang kita inputkan tadi dengan menggunakan perintah select.






Mengenal SQL Plus

SQL plus adalah salah satu aplikasi yang disediakan oleh produk Database terhandal saat ini yaitu Oracle , fungsi dari aplikasi ini adalah untuk menjalankan perintah perintah SQL baik itu untuk melakukan data manipulation language atau data definition language. dengan aplikasi ini pula kita bisa menjalankan atau membuat sebuah procedure pemograman atau trigger pada database yang lebih kita kenal dengan PL/SQL atau Procedure language structure query language. sebenarnya untuk mengakses structure query language , Oracle juga menyediakan aplkasi yang lebih handal yaitu SQL Worksheet . keterbatasan pada SQL plus adalah hanya bisa menangani satu perintah saja untuk sekali eksekusi, berbeda dengan SQL Worksheet yang bisa menjalankan beberapa perintah dalam satu eksekusi saja. untuk para DBA biasanya lebih senang menggunakan SQL Worksheet daripada SQL plus. biasanya SQL plus diinstal pula pada pc client , hal ini bertujuan jika sewaktu waktu ada kendala sang administrator dapat mengakses database dengan perintah SQL lewat aplikasi ini.

Pengenalan Structure Query Language

Structure Query languange adalah sebuah bahasa yang di gunakan untuk mengakses data dari database dengan kriteria tertentu. setidaknya itu berdasarkan pengalaman saya yang baru-baru ini menggeluti dunia database administrator. sebenarnya konsep SQL itu sama saja antara database yang satu dengan yang lain tetapi mungkin memang ada perbedaan dengan SQL yang digunakan yang mengacu pada SQL 92 dengan SQL 93 , untuk mengakses bahasa bahasa standar SQL mungkin tidak akan terlihat bedanya , akan tetapi jika sudah unjuk gigi akan kemampuan dan kehandalan masing masing database itu sendiri baru terlihat bedanya, bahasa - bahasa SQL ini mulai menunjukan tajinya masing masing misalnya dengan menggunakan trigger, procedure, pl sql dan masih banyak lagi.. tetapi untuk saat ini database yang paling powerfull menurut saya berdasarkan yang sudah saya gunakan adalah Oracle.