Comments (0)
Tips untuk Meningkatkan Kinerja Kueri MySQL – Bagian 1
MySQL adalah Sistem Manajemen Basis Data Relasional (RDBMS) sumber terbuka paling populer yang menggunakan Structured Query Language (SQL).
Kueri SQL tunggal yang dirancang dengan buruk akan menimbulkan ancaman serius terhadap kinerja keseluruhan aplikasi Anda. Oleh karena itu, mengoptimalkan kinerja kueri sangatlah penting. MySQL dilengkapi dengan tool yang membantu dalam mengoptimalkan kueri. Mari kita lihat tips yang paling penting dan berguna untuk meningkatkan Kueri MySQL untuk kecepatan dan kinerja.
1. Optimalkan Basis Data Anda
Anda perlu tahu cara merancang skema untuk mendukung kueri yang efisien. Skema dan pertanyaan yang dirancang dengan baik sangat penting agar aplikasi Anda berfungsi dengan baik.
Mengoptimalkan kueri MySQL Anda tidak akan membawa kepada kinerja basis data yang baik. Basis data yang terstruktur dengan baik sangatlah penting bersama dengan kueri yang dioptimalkan. Jika tidak, apabila terjadi lonjakan data, kinerja basis data akan terpengaruh.
Strategi berikut akan membantu Anda untuk mengoptimalkan basis data Anda.
a. Normalisasikan Tabel
Normalisasi adalah teknik desain basis data yang mengatur tabel dengan cara mengurangi redundansi dan ketergantungan data. Yaitu dengan membagi tabel yang lebih besar ke tabel yang lebih kecil dan menautkannya menggunakan relasi. Ini untuk menghindari memiliki kolom data bernilai null dan memastikan bahwa semua kolom data dalam tabel hanya milik satu domain data yang dijelaskan.
Misalnya, dalam tabel karyawan, kolom data tersebut bisa berupa id, nama, nomor jaminan sosial, tetapi ketiganya tidak ada hubungan dengan departemen. Hanya id karyawan yang menunjukkan departemen milik karyawan tersebut. Jadi ini menyiratkan bahwa di departemen mana seorang karyawan harus berada dalam tabel lain.
b. Gunakan Jenis Data yang Optimal
MySQL mendukung tipe data yang berbeda dan memilih tipe yang tepat untuk menyimpan data Anda sangat penting untuk memiliki kinerja yang baik. MySQL mendukung data tipe numerik, tipe tanggal dan waktu dan tipe string (karakter) (integer, float, double, date, date_time, varchar, text, dll.). Tipe data yang berbeda memiliki tujuan yang berbeda pula. Saat membuat tabel, Anda perlu memahami tipe data apa yang akan dimiliki oleh setiap kolom dan memilih tipe data yang paling pas.
Jika kolom data membutuhkan nilai tanggal, menggunakan tipe data date_time adalah yang terbaik karena Anda tidak harus menjalankan fungsi rumit untuk mengonversi kolom data menjadi tanggal saat mengambil kumpulan data menggunakan SQL. Gunakan nilai integer jika Anda mengharapkan semua nilai menjadi angka. Ketika bicara mengenai komputasi, MySQL dapat melakukannya lebih baik dengan nilai integer dibandingkan dengan tipe data teks seperti Varchar (menyimpan string karakter variable-length dan merupakan tipe data string yang paling umum).
c. Hindari Nilai Null
Mengizinkan nilai null (tidak adanya nilai apa pun dalam kolom) di basis data Anda adalah ide yang sangat buruk kecuali kolom tersebut secara logis dapat memiliki nilai null. Kehadiran nilai null dapat memengaruhi hasil basis data Anda.
Misalnya, jika Anda ingin mendapatkan jumlah semua pesanan dalam basis data, hasil yang diharapkan mungkin akan buruk jika baris data pesanan tertentu memiliki jumlah nol. Hasil semacam ini mungkin tidak terjadi jika Anda sebelumnya menggunakan pernyataan MySQL ‘ifnull’ untuk mengembalikan nilai lain.
d. Hindari Terlalu Banyak Kolom
Kelemahan terbesar dari memiliki banyak kolom adalah ekstra input-output dan tambahan penyimpanan data.
Memiliki tabel yang luas bisa sangat mahal dan menyebabkan tambahan penyimpanan. Ideal tidak melebihi seratus kolom kecuali jika aturan bisnis Anda secara khusus mengharuskan hal ini.
Alih-alih membuat satu tabel luas, membaginya menjadi struktur logis sangatlah bermanfaat. Misalkan Anda membuat tabel karyawan. Dalam kasus tertentu, Anda memahami bahwa seorang karyawan dapat memiliki beberapa alamat. Maka lebih baik membuat tabel terpisah untuk memasukkan alamat karyawan yang merujuk kembali ke tabel karyawan menggunakan kolom data ’employee_id’.
2. Optimalkan Join
Kurangi pernyataan join dalam kueri. Pernyataan SQL dengan pola yang dirancang buruk yang melibatkan banyak join mungkin tidak berfungsi dengan baik. Aturan praktisnya adalah memiliki maksimal satu lusin join untuk setiap kueri.
3. Indeks Semua Kolom yang Digunakan dalam Klausa ‘where’, ‘order by’ dan ‘group by’
INDEKS. Indeks basis data adalah struktur data yang meningkatkan kecepatan operasi dalam sebuah tabel. Indeks dapat dibuat menggunakan satu atau lebih kolom yang menyediakan dasar baik untuk pencarian acak cepat maupun permintaan akses yang efisien ke baris data.
Saat membuat indeks, persamaan dalam kondisi WHERE dan JOIN benar-benar penting. Sebagai contoh, kondisi seperti nama = ‘John’ akan memungkinkan basis data untuk menyaring sebagian besar baris dari tabel dan melintasi sejumlah kecil baris untuk mengembalikan hasil yang dibutuhkan. Dengan demikian, kita harus mulai mengindeks dengan menambahkan kolom-kolom ini ke indeks.
Kemudian, Anda hanya perlu menambahkan salah satu kondisi-kondisi rentang (range) paling selektif karena MySQL tidak dapat menangani lebih dari itu. Dalam beberapa kasus ketika tidak ada kondisi range, logis untuk menambahkan kolom GROUP BY / ORDER BY, dengan asumsi pengurutan dilakukan hanya dalam satu arah (ASC / DESC).
Klausa GROUP BY digunakan untuk meminta hasilnya dan karenanya jika:
– urutan indeks yang benar digunakan atau
– hanya kolom paling kiri digunakan dalam group by
– kolom paling kiri digunakan di klausa WHERE dan sisanya dalam urutan yang benar dalam klausa GROUP BY indeks akan digunakan.
Bersambung ke Bagian 2…
(Sumber & Gambar: bridge-global.com – Neenu)
Recent Posts
Recent Comments
Archives
LATEST VIDEO
Tags
- ai
- analysis
- application
- art
- articles
- artificial intelligence
- audio
- block chain
- business
- cloud
- coding
- cryptocurrency
- culture
- data
- database
- design
- desktop
- development
- digital
- economy
- encryption
- enterprise
- events
- framework
- hardware
- health
- html/css
- Image
- industry
- infomation
- information
- internet
- jquery
- knowledge
- management
- mobile
- officesuite
- online
- open source
- program
- programming
- proprietary
- PROSolvIT
- Quote
- RDO-POS
- reendoosystem
- RHomeS
- robotic
- security
- server
- SiReDisH
- SiReDU
- SiReGi
- software
- sound
- spreadsheet
- system
- technology
- tips
- tool
- tricks
- tutorial
- ui
- userexperience
- userinterface
- ux
- video
- virtual reality
- vr
- web
- web design
- website
- wordpress
LEAVE A REPLY
Your email address will not be published. Required fields are marked *