Blog

Tối ưu hóa câu lệnh SQL

Mở đầu

Tối ưu hóa câu lệnh SQL rất quan trọng trong những phần mềm liên quan nhiều đến nghiệp vụ như ngân hàng, các tập đoàn, công ty lớn… thì số lượng records trong DB rất lớn. Việc join nhiều table với hàng trăm, chục nghìn bản ghi là thường xuyên xảy ra. Một trong những phương pháp cần thiết để tốc độ của hệ thống được đảm bảo là phải tối ưu hóa từng dòng lệnh SQL.

>> Đọc thêm:

KHOÁ HỌC TRUY VẤN VÀ THAO TÁC DỮ LIỆU SQL TỪ CƠ BẢN ĐẾN NÂNG CAO

KHÓA HỌC DATA WAREHOUSE : TỔNG HỢP, CHUẨN HÓA VÀ XÂY DỰNG KHO DỮ LIỆU TRONG DOANH NGHIỆP

KHÓA HỌC DATA MODEL – THIẾT KẾ MÔ HÌNH DỮ LIỆU TRONG DOANH NGHIỆP

LỘ TRÌNH TRỞ THÀNH DATA ENGINEER CHO NGƯỜI MỚI BẮT ĐẦU

DATA ENGINEER LÀ GÌ? CÔNG VIỆC CHÍNH CỦA DATA ENGINEER? CÁC KỸ NĂNG CẦN THIẾT

Index

Chỉ mục (Index) là bảng tra cứu đặc biệt mà Database Search Engine có thể sử dụng để tăng nhanh thời gian và hiệu suất thu thập dữ liệu. Hiểu đơn giản, một chỉ mục là một con trỏ tới dữ liệu trong một bảng. Một chỉ mục trong một Database là tương tự như một chỉ mục trong Mục lục của cuốn sách. Index giúp tăng tốc các truy vấn SELECT và các mệnh đề WHERE, nhưng nó làm chậm việc dữ liệu nhập vào, với các lệnh UPDATE và INSERT. Các chỉ mục có thể được tạo hoặc xóa mà không ảnh hưởng tới dữ liệu. Việc sử dụng Index sẽ phù hợp với những DB có lượng dữ liệu lớn và ít có thay đổi như thông tin khách hàng của ngân hàng. Tạo Index như sau :

  CREATE INDEX index_name ON table_name;

Xóa Index

  DROP INDEX index_name;

Các nguyên nhân gây chậm truy vấn SQL

  1. Không/thiếu sử dụng các lợi ích của Indexes.
  2. Trả về các dữ liệu không cần thiết.
  3. Locks or deadlocks bị cấm.
  4. Các câu truy vấn được viết nghèo nàn.
  5. Không/thiếu tận dụng được I/O striping.
  6. Thiếu bộ nhớ.

Các phương pháp cải tiến

Thu hẹp giá trị trả về

Việc thu hẹp giới hạn của giá trị trả về sẽ tiết kiệm bộ nhớ, I/O striping, dung lượng khi truyền từ server về client.

 SELECT * FROM table_1 LEFTJOIN table_2 WHERE table_1.id = table_2.gid;

sử dụng select * sẽ khiến SQL quét toàn bộ table,trả về dữ liệu trùng lặp tiêu tốn I/O.Truy vấn dưới đây cùng mục đích nhưng nhanh hơn.

 SELECT table_1.id,table_2.username,table_2.lucky FROM table_1 LEFTJOIN table_2 WHERE table_1.id = table_2.gid;

không hạn chế Index

  1. toán tử phủ định : Index không thể thực hiện với toán tử phủ định do đó các toán tử phía dưới sẽ làm chậm câu lệnh hãy hạn chế sử dụng.
"IS NULL", "!=", "!>", "!<", "NOT", "NOT EXISTS", "NOT IN", "NOT LIKE",
  1. toán tử so sánh 2 lần
SELECT userid, username FROM user WHERE user_amount <=3000

câu lệnh này sẽ khiến SQL so sánh 2 lần : user_amount< 3000 OR user_amount=3000 do đó làm chậm truy vấn.Hãy dùng câu lệnh dưới đây cho tình huống tương tự.

SELECT userid, username FROM user WHERE user_amount < 3001

Sử dụng Like không hợp lý sẽ làm chậm truy vấn:

 SELECT lname, fname, address FROM Customers WHERE fname LIKE ‘%V%’

câu lệnh này so khớp phần đầu của %V vì thế không thể dùng index mặc dù điều kiện tìm kiếm rõ hơn nhưng sẽ chậm hơn câu lệnh dưới đây.

 SELECT lname, fname, address FROM Customers WHERE fname LIKE ‘V%’
  1. hạn chế sử dụng function lên column
 SELECT member_number, first_name, last_name
FROM members
WHERE DATEDIFF(yy,datofbirth,GETDATE()) > 21

sau khi tính toán bởi hàm DATEDIFF thì SQL không thể dùng Index cho column datofbirth được nữa. Sử dụng câu truy vấn như dưới đây sẽ nhanh hơn.

SELECT member_number, first_name, last_name
FROM members
WHERE dateofbirth < DATEADD(yy,-21,GETDATE())

Không để SQL thực hiện thao tác thừa

  1. UNION, UNION ALL union-vs-union-all.jpg mặc dù cả 2 câu truy vấn đều quét table như nhau nhưng ở câu truy vấn 1 tiêu tốn phần lớn thời gian cho thao tác 「Distinct sort」để loại bỏ những bản ghi trùng nhau (mặc dù không hề có những records như vậy). đây là 1 ví dụ khác :
 SELECT userId, userName, userPhone
FROM User
WHERE dept = 'ruby' or rank = '5' or division = '2'
 SELECT userId, userName, userPhone FROM User
WHERE dept = 'ruby' UNION ALL
SELECT userId, userName, userPhone FROM User
WHERE rank = '5' UNION ALL
SELECT userId, userName, userPhone FROM User
WHERE division = '2'
  1. DISTINCT, ORDER BY Đừng sử dụng DISTINCT và ORDER BY trong câu lệnh SELECT trừ khi thật sự cần thiết, DISTINCT sẽ kiểm tra và loại bỏ các bản ghi trùng lặp ORDER BY sẽ sort các records hầu hết các trường hợp 2 thao tác này chiếm phần lớn thời gian truy vấn.
  2. COUNT() vs IF EXISTS Khi xác định sự tồn tại của records trong bảng nên dùng IF EXISTS thay cho COUNT() hoặc COUNT(DISTINCT).
IF (SELECT COUNT(*) FROM table_name WHERE column_name = 'xxx')

Hàm COUNT sẽ tìm cách lấy tất cả phần tử, so sánh, đếm nên sẽ tốn tài nguyên và nhiều thao tác hơn.Hãy dùng

IF EXISTS (SELECT * FROM table_name WHERE column_name = 'xxx')

Sử dụng SQL Procedue

  • Đối với các thao tác được thực hiện 1 cách thường xuyên và có xử lý phức tạp ta sử dụng SQL procedure(SP) với nhiều lợi ích như dưới đây.
  1. Giảm lượng dữ liệu truyền đến Server SP được lưu sẵn ở phía server do đó không cần phải gửi cả câu lệnh SQL dài tới server mà chỉ cần gửi tham số.
  2. SP được biên dịch ngay ở lần đầu chạy, những lần sau chạy SP sẽ sử dụng lại file đã biên dịch trước đó nên tốc độ sẽ nhanh hơn.
  3. Mặt khác khi sử dụng SP trong source có thể dùng vòng for để gọi nhiều câu lệnh SQL gửi lên server điều này giúp tái sử dụng source.

Kết luận và chú ý

  1. đối với developer việc tinh chỉnh lại câu sql không tốn nhiều ng sức nhưng sẽ giúp hệ thống giảm thiểu tính toán đáng kể.
  2. một số mục tối ưu ở trên mặc dù sử dụng được index giúp truy vấn nhanh hơn nhưng ngược lại làm chậm thao tác INSERT ,UPDATE do đó hãy cân nhắc toàn bộ hệ thống trước khi áp dụng.
  3. Có rất nhiều lý do để tập luyện cho mình quen với lối viết SQL tối ưu. Khi bạn áp dụng thành thạo những thủ thuật nhỏ nêu trên và biến nó thành thói quen mỗi khi viết câu lệnh.Những thủ thuật rất đơn giản này còn giúp bạn tận dụng tốt hơn tài nguyên máy chủ trong quá trình xử lý câu lệnh.

Học Viện INDA có các khóa học về tối ưu câu lệnh (SQL level 2), Xây dựng kho dữ liệu (Data Warehouse), Phân tích dữ liệu,…Đăng ký ngay để nhận được tư vấn chi tiết lộ trình dành riêng cho bạn nhé!

Ngoài ra, Chúng tôi chuyên cung cấp các dịch vụ về Xây dựng Kho dữ liệu Data Warehouse/ Xây dựng Báo cáo Power BI cho các doanh nghiệp lớn như: Nakagawa, Mutosi, Tinh Vân Group,….. đăng ký ngay để được Demo và tư vấn miễn phí dành riêng cho doanh nghiệp của bạn.

>> Đọc thêm:

KHOÁ HỌC TRUY VẤN VÀ THAO TÁC DỮ LIỆU SQL TỪ CƠ BẢN ĐẾN NÂNG CAO

KHÓA HỌC DATA WAREHOUSE : TỔNG HỢP, CHUẨN HÓA VÀ XÂY DỰNG KHO DỮ LIỆU TRONG DOANH NGHIỆP

KHÓA HỌC DATA MODEL – THIẾT KẾ MÔ HÌNH DỮ LIỆU TRONG DOANH NGHIỆP

LỘ TRÌNH TRỞ THÀNH DATA ENGINEER CHO NGƯỜI MỚI BẮT ĐẦU

DATA ENGINEER LÀ GÌ? CÔNG VIỆC CHÍNH CỦA DATA ENGINEER? CÁC KỸ NĂNG CẦN THIẾT

Nguồn tham khảo

  1. http://www.developer.com/db/slideshows/10-ways-to-improve-sql-query-performance.html
  2. http://www.sqlviet.com/blog/toi-uu-hoa-cau-lenh-bang-covering-index
  3. http://p2share.com/toi-uu-truy-van-csdl-sql-server-bai-1.html?ckattempt=1

Leave a Reply

Your email address will not be published. Required fields are marked *

suarairama pestanada beritabandar rumahjurnal podiumnews dailyinfo wikiberita zonamusiktop musicpromote bengkelpintar liburanyuk jelajahhijau carimobilindonesia jalanjalan-indonesia otomotifmotorindo ngobrol olahraga mabar dapurkuliner radarbandung indosiar radarjawa medianews infowarkop kalbarnews ketapangnews beritabumi kabarsantai outfit faktagosip beritagram lagupopuler seputardigital updatecepat marihidupsehat baliutama hotviralnews cctvjalanan beritajalan beritapembangunan pontianaknews monitorberita koronovirus museros iklanjualbeli festajunina capoeiravadiacao georgegordonfirstnation 1reservoir revisednews

Cara Insting Tajam Menyusun Pola Simetris Baccarat Online Lewat Mekanisme yang Optimal Analisis Pemain Bogor Melalui Logika dan Emosi Mahjong Wins 3 Ternyata Cermin dari Kesabaran Diri Strategi Ganda Baccarat Pemain Makassar Viral! Kemenangan Ganda Membaca Pola Masa Depan Catatan Manual ke Strategi Nyata, Pemain Bogor Temukan Pola Mahjong Ways 2 Membungkam Mitos Keberuntungan Analisis Sunyi Pemain Baccarat Jakarta Temukan Logika di Balik Kekacauan yang Terencana Teknik Presisi Mengatur Kecepatan Spin Mahjong Ways 3 Untuk Kenaikan Hasil yang Ideal Mulai dengan Doa Menang Cara Efektif Menganalisis Trik Baccarat Online Secara Sistematis Cara Unlock Pola Tersembunyi Mahjong Wins 3 Sebagai Langkah Pintar Meraih Kemenangan Trik Escape di Putaran Cepat Pragmatic Gate Olympus Sambut Kemenangan Spesial Pelajari Membaca Pola Sederhana Mahjong Ways 2 Bikin Menang Tipis Tapi Tetap Stabil Taktik Rahasia Supir Pribadi Memanggil Scatter Hitam di Mahjong Ways 2 Saat Drive Thru Cara Intuisi Bekerja Mencatat Pola Baccarat Online Melalui Skema yang Sempurna Tafsir Personal Membuka Pintu Berkah Lewat Mahjong Wins 3 Bikin Keuntungan Tetap Stabil Arsip Data Narasi Gates of Olympus Ciptakan Putaran Warna Spesial Lebih Menguntungan Resonansi Sunyi di Tengah Irama Mahjong Ways 3 Berikan Labirin Menuju Cuan Besar Dimensi Scatter Ganda Mahjong Ways 2 Sebagai Takdir Kemenangan Nyata Merubah Nasib Ekspansi Kosmik Wild Membangun Fitur Kejayaan Abadi Dunia Mahjong Wins 3 Kakek Tua di Pantai Ancol Menemukan Jejak Pola Gates of Olympus Membawa Cuan Berlimpah Kisah Sang Legenda Baccarat Online Temukan Lembaran Data Sebagai Analisa Merubah Garis Kehidupan Cara Mendengar Langkah Sunyi Scatter Hitam Sebagai Sinyal Kemenangan di Mahjong Ways 3 Setelan Ideal Sinkronisasi Pola Mahjong Ways 2 Mengatur Tempo Scatter dengan Hasil Optimal Cara Evaluasi Sederhana Cepat Kuasai Trik Baccarat Online Secara Tepat dan Terarah Konsolidasi Pola Spin Membantu Menunjukkan Arah Strategis di Mahjong Ways 3 Bangkitkan Semangat Menjemput Rejeki Lewat Mahjong Ways Saat Scatter Muncul Tiba-tiba Fakta Unik Mahjong Wins 3: Teknik Rahasia Munculkan Wild Berderet pada Spin Pertama Semarang Menjadi Kota Fantasi Mahjong, Tukang Edit Foto Mengunggah Permainan Pola Mahjong Terbaru Hujan Deras, Sejumlah Pengendara Menepi dan Mencoba Bermain Mahjong Wins 3 yang Sedang Bocor Saat Ini Fenomena Tengah Malam, Mahjong Ways 3 Tiba-Tiba Berubah Warna dan Disebut Masuk Mode Rahasia Scatter Black Peneliti Visual SUHUBET Ungkap Sinkronisasi Pola Mahjong dan Musik, Disebut Harmoni Terserasi Tahun Ini Kobarkan Semangat Syair Mahjong, Tangerang Gelarkan Protokol Putaran Cepat 50 Kali Dalam 1 Kali Coba Spin Strategi Hidup Dan Mati Pola Terbaik Anti Boncor Menghadirkan Berbagai Penghasilan Terbesar Pada Mahjong Ways 3 Hanya Menggunakan Mahjong Ways Mendapatkan Rp150.000.000 Tips Cara Memelihara Anabull Ala Husman Timeline Rahasia Perputaran Mahjong Wins Dapat Membuat Turunnya Pola Jackpot Dengan Konsisten Pengembangan Mahjong Dengan Teknologi Ai Menghadirkan Pola Jackpot Dengan Market Cap Hijau Pola Mahjong Tercepat Dan Tertajam Tips Membaca Pola Hingga Pandai Ala Jefri Dengan Hasil Rp 210.000.000 Shin Tae-Yong Sudah Fix Tidak Melatih Timnas Cek Juga Tempat Jadwal Nonton Bola Harian di SLOTSENSA Cerdas Cermat Membaca Dan Analisis Pola Mahjong Dengan Bermodal 50k Menjadi Rp150.000.000 Sangat Optimis Hanto Dengan Perputaran Menarik Melawan Mahjong Menggunakan Pola Hasil Analisis Data Spirit Perjuangan Hilman Bertambah Besar Setelah Memenangkan Rp 410.000.000 dari Pertarungan Mahjong Sinopsis Penulis Mengungkap Pertarungan Dengan Naga Mahjong Menggunakan Teknik Praktis dan Pola Visual Rahasia di Balik Pola Mahjong Wins 3 Akhirnya Ditemukan! Pemain Asal Bandung Bongkar Trik yang Selama Ini Disembunyikan Strategi Langkah Mundur di Mahjong Ways Tiba-Tiba Populer, Katanya Bisa Bikin Pola RTP Tetap Stabil Sepanjang Hari Dari Analisis Panjang ke Hasil Mengejutkan! Mahjong Wins 3 Ternyata Punya Pola Tersembunyi yang Jarang Disadari Pemain Rahasia Pemain Surabaya Akhirnya Terkuak! Mahjong Ways 2 Bisa Pecah Berkali-Kali Cuma Modal Rotasi 15 Menit Sekali Fenomena Baru Mahjong Wins! Pemain Bogor Ungkap Pola Pergantian Hari yang Selalu Bawa Kemenangan Besar Fenomena Langka di Komunitas Digital Mahjong Black Dragon, Visualnya Bikin Kagum Perpaduan Suara dan Penyajian Semerbak untuk Mata Kita, Mahjong Sedang Melakukan Pembangunan Besar Besaran Beginilah Caranya Agar Perputaran Selalu Stabil dan Membuat Mahjong Seru untuk Diperjuangkan Perbincangan yang Memberikan Esensi Kehidupan Mahjong dengan Datangnya Pola Wild Anti Kalah Host Livestreaming Sedang Menjadi Perbincangan, Dikarenakan Bermain Mahjong dengan Pecahan Besar Diketahui Bermain di SUHUBET Cerita Tukang Parkir Bandung Kagum Lihat Efek Wild Naga di Mahjong Ways Bangsawan SUHUBET Membeberkan Cara Kuasai Teknik Mahjong Dengan Pola Mudah Raup Untung 362 Juta Taktik Multiplier Spin Dengan Tingkatkan Pendapatan di Mahjong, Strategi Sederhana Seorang Penempa Besi Raup Untung 410 Juta Kecil-Kecil Jadi Bukit, Filosofi Putaran Mahjong Tentang Konsistensi dan Hasil yang Besar | Tips Putaran Receh Dikira Kurir Mengantar Paket di Pagi Hari, Ternyata Mengantarkan Simbol Wild 231 Juta di Mahjong kepada Nina Kronologi Jatuhnya Naga Black Scatter Pada Perputaran Gratis Mahjong, Ilham Menghasilkan 410 Juta Analisa Bocoran Data Mahjong Ways dan Pola Putaran RTP Terbaik Bikin Heboh Dunia Digital Observasi Data Menunjukkan Pola Mahjong Ways Muncul Seperti Gelombang Kebahagiaan Riset Pola Harian Mahjong Ways Ungkap Hubungan Menarik dengan Data Digital Pola RTP Tertinggi Ketika Statistik Menjadi Seni Analisis Mahjong Ways Ubah Cara Orang Melihat Pola Pada RTP Tertinggi Penjual Tahu Bulat Dadakan Dikagetkan Sama Pecahnya Wild Mahjong Wins 3 Dengan Membawakan 450 Juta Pemain Pro Dari Kota Madiun Berbagi Taktik Permainan Mahjong Wins 3 Yang Menghasilkan Berbagai Kemenangan Terbukti Ampuh, Suherman Menggunakan Pola Terlarang Permainan Mahjong Ways 3 Dengan Hasil 320.000.000 Rahasia Terbaru Pola Mahjong Ways 3 Terbongkar RTP98% Membawakan Wild Sebesar 410.000.000 Suli Dari Pemantang Siantar Membawakan Pola Terbaru Hasil Analisa Terbaru Mahjong Wins 3 Dengan Cara High Risk High Return Perpaduan Simbol Wild dan Scatter yang Menggemparkan Mahjong Ways 3, Bentuk Apresiasi Para Pemain Setiap SUHUBET Putaran 3 Manual dan 20 Auto Membuahkan Hasil, Pemain Bernama Kintami di Mahjong Ways 3 Ciptakan Momen yang Sangat Keren Pola Terbaru Diberi Nama ‘Harmony Data’ karena Ditemukan dari 1.200 Putaran Analisis oleh Komunitas SUHUBET Pola Unik Anak Bengkel Ini Bikin Komunitas Mahjong Ways 3 Terkejut, Disebut Punya Akurasi Tinggi Gelombang Wild Tak Biasa, Scatter Muncul Bersamaan Seperti Dipanggil oleh Pola Data Baru di Mahjong Ways 3 Fenomena Mahjong dan Pola Klik Digital yang Ternyata Punya Akurasi Tinggi di Tahun 2025 Mahjong 2025 Bukan Sekadar Game Tapi Fenomena Pola Data yang Sedang Diteliti Banyak Komunitas Pola Mahjong 2025 Disebut Lebih Stabil Banyak yang Kaget Melihat Hasil Analisis Digitalnya Pola Mahjong 2025 Jadi Sorotan Disebut Punya Irama Klik Unik yang Bikin Banyak Orang Penasaran Rahasia Pola Mahjong Mulai Terbongkar Komunitas Digital Temukan Pola Klik yang Tak Pernah Gagal Eksperimen Grid Staking 2–1–3–2 Versi Dimas UI, Tercatat Stabil 94,8% Dalam 50 Menit Pengujian Berlapis Fenomena Irama Scatter dari Tim Research Jogja, Ubah Cara Main Manual Jadi Auto Sync 4x Lebih Cepat Metode Pola Klik Ala Rani, Data Analyst Asal Bandung: Irama 1–2–1–3 Tembus Akurasi 96,2% Setelah 68 Menit Eksperimen Mandiri Model Data Wave Scatter dari Mahasiswa IT Malang Terbukti Bisa Aktifkan Wild Secara Bersamaan di Menit Ke-43 Pola Reverse Flow Buatan Komunitas Surabaya Diuji 15 Kali, Hasilnya Sinkron Dengan RTP PGSOFT 95,7% Tanpa Gangguan Server Investasi Rp50 Triliun Di KEK Galang-Batam Dorong Hilirisasi Bauksit dan Prospek Baru Bagi Masyarakat Kejaksaan Batam Ungkap Dugaan Korupsi Asuransi Aset PT Persero, Empat Tersangka Resmi Ditahan Menjelang Akhir Tahun, Harga Beras di Batam Terpantau Stabil Wali Kota Amsakar Pastikan Pasokan Aman Penyelundupan Sisik Trenggiling Senilai Rp1,2 Miliar Digagalkan di Pelabuhan Batam, Satu Tersangka Diamankan Warga Batam Siaga: BMKG Prediksi Hujan Petir & Gerimis Sepanjang Hari di Wilayah Kota Dari Bali Hingga Seoul, Tren Spa Ramah Lingkungan dan Filosofi Mahjong Ways Mulai Jadi Gaya Hidup Baru Di Balik Hening dan Aroma Kayu Manis: Pola Ketenangan yang Sama Seperti Saat Menemukan Irama di Mahjong Wins Gelombang Baru Wellness di Asia Pasifik: Saat Spa dan Pola Mahjong Wins Sama-Sama Bicara Tentang Kesabaran dan Irama Rahasia Di Balik Senyum Para Penerima APSWC 2025 Awards: Dari Pola Hidup Seimbang Hingga Filosofi Mahjong Ways Wellness Tak Lagi Sekadar Tren: Data Menunjukkan Pola Mahjong Ways dan Mindfulness Kini Jadi Arah Baru Dunia Cara Insting Tajam Menyusun Pola Simetris Baccarat Online Lewat Mekanisme yang Optimal Analisis Ganda Pemain Surabaya Baccarat Ternyata Mengikuti Irama Napas, Bukan Statistik Pemain Jakarta Temukan Pola Mahjong Wins 3 Lewat Catatan Harian Emosional, Buat Banyak Orang Terdiam Rahasia Tersembunyi Mahjong Ways Saat Waktu Bermain Jadi Faktor Penentu Pecahnya Pola yang Tak Pernah Diungkap Publik Strategi Terbalik Pemain Surabaya Berhenti Sebelum Scatter, Justru Dapat Pola Tertinggi Mahjong Ways 3 Analisis Pemain Bogor Buktikan Pola Stabil Muncul Setelah 9 Kali Gagal repository.tdjpublisher.com