Metode Meningkatkan Performa Data Listing/Table/Pagination dengan Signifikan

Problem

Fitur data listing/table/pagination dalam sebuah aplikasi dapat menimbulkan masalah di kemudian hari, seiring bertambahnya data dan user. Banyaknya data dan user akan memperlambat performa aplikasi dalam menampilkan data. Sebagai contoh aplikasi menggunakan metode LIMIT dan OFFSET dalam membuat data list, pada awal rilis aplikasi ini memiliki 1000 data produk dan 100 user kemudian aplikasi ini memiliki 1 juta data produk dan +100rb user, maka performa aplikasi dalam menampilkan data produk akan melambat.

Metode OFFSET sangat umum digunakan, jika data yang digunakan sedikit metode ini tidak akan menjadi masalah, namun masalah akan terjadi jika aplikasi memiliki data dangat banyak dan nilai OFFSET sangat besar. Contoh dengan query "OFFSET 50000, 20" kita akan mengambil 20 data, dimulai dari data yang ke 50rb, maka dalam eksekusinya database akan mencari satu per satu data hingga data ke 50rb kemudian akan mengambil data ke 50001 - 50020. Eksekusi seperti ini memiliki cost yang sangat tinggi dan waktu response yang lama.

Semakin tinggi nilai OFFSET maka akan semakin tinggi nilai cost dan waktu response akan semakin lama.

Performa Metode OFFSET

Solusi

Ada beberapa teknik dan solusi untuk memecahkan masalah ini:

  1. Metode Seek (Metode Seek untuk Meningkatkan Performa Data Listing)
  2. ElasticSearch (Data List dengan ElasticSearch dan PostgreSQL)
  3. ...

References:

  • https://www.eversql.com/faster-pagination-in-mysql-why-order-by-with-limit-and-offset-is-slow/