Blog Posts » MySQL » Optimasi MySQL ORDER BY

Optimasi MySQL ORDER BY

Beberapa hari yang lalu blog ini saya coba test di localhost dengan meng-INSERT ratusan ribu baris data. Saya ingin tahu performanya dan ternyata masih saya temukan beberapa query yang lambat. Setelah saya selidiki (halah :D), ternyata penyebab utamanya adalah fitur sortir MySQL yaitu ORDER BY.

Bagaimana sebaiknya jika menggunakan ORDER BY?
Yang perlu diingat, ORDER BY hanya menimbulkan masalah jika digunakan pada SELECT yang menghasilkan data besar, atau dengan kata lain jika untuk menyortir data yang cukup banyak.
[Textarea][RAW][Download]

  1. SELECT * FROM table_name WHERE id = 1 ORDER BY datetime ASC LIMIT 10;


Pada proses SELECT diatas jika data yang dipunyai oleh id 1 sangat banyak maka akan bermasalah. Maka solusinya adalah membatasi hasil SELECT lebih dahulu sebelum menggunakan ORDER BY.
[Textarea][RAW][Download]

  1. SELECT * FROM (SELECT * FROM table_name WHERE id = 1 LIMIT 10) table_alias ORDER BY datetime ASC;


Query diatas tentunya akan berjalan cepat karena kita mendefinisikan tabel alias yang sudah di-LIMIT terlebih dahulu sebelum ORDER BY. Jadi ORDER BY sangat ringan karena hanya menyortir 10 baris saja.

Maka dari itu kemarin-kemarin saya merombak total struktur database blog ini, karena rupanya memang agak rumit menerapkan trik ini untuk menghindari penggunaan ORDER BY jika yang kita butuhkan adalah data yang lebih baru (DESCENDING).

Semoga bermanfaat :)