Nilai null Bikin mysql Lemot

Jadi ceritanya aku menemukan sebuah bug di aplikasi yang kubikin. Sebenarnya masalahnya simpel sih tapi karena mungkin kurang minum air putih, kadang satu atau dua kode yang salah bisa lolos.

Saat mencari-cari bug tersebut aku juga menemukan satu kejanggalan (gak tau sih ini termasuk kejanggalan) di mysql. Nilai null membuat query di mysql jadi sedikit lama.

Misalnya saja aku memiliki tabel posts untuk minyimpan artikel dan tabel category_post untuk menyimpan kategori artikel tersebut.

SELECT category_post.id FROM category_post
JOIN posts ON category_post.post_id = posts.id
WHERE category_post.category_id = 1
AND posts.type = 'PUBLISHED'
ORDER BY category_post.id DESC
LIMIT 10;

Hasil untuk query di atas:

+--------+
| id     |
+--------+
| 406931 |
| 406929 |
| 406919 |
| 406915 |
| 406909 |
| 406882 |
| 406859 |
| 406836 |
| 406819 |
| 406817 |
+--------+
10 rows in set (0.00 sec)

Nah query di bawah, aku tambahkan sebuah parameter pencarian artikel yang belum dihapus:

SELECT category_post.id FROM category_post
JOIN posts ON category_post.post_id = posts.id
WHERE category_post.category_id = 1
AND posts.type = 'PUBLISHED'
AND posts.deleted_at IS NULL
ORDER BY category_post.id DESC
LIMIT 10;

Lama query hampir 3 detik untuk jumlah artikel yang berjumlah hampir 100 ribu record.

+--------+
| id     |
+--------+
| 406931 |
| 406929 |
| 406919 |
| 406915 |
| 406909 |
| 406882 |
| 406859 |
| 406836 |
| 406819 |
| 406817 |
+--------+
10 rows in set (2.85 sec)

Solusinya sih, baiknya record yang dihapus dipisahkan ke tabel yang lain saja.

Connect with me:

Comments

Spammy comment will be deleted. Markdown syntax is supported.