My SQL Query Optimization

Background :

  • Table size : 29,9 GB
  • Engine : MyISAM
  • Table Structure :
    Field Type Null Key Default Extra
    Date date NO PRI
    Time time NO PRI
    GBSC varchar(100) NO MUL
    CellCI int(10) NO PRI
    CellName varchar(100) NO
    CellIndex varchar(100) NO
    CellLAC int(10) NO PRI 0
    Integrity double NO 0
  • Query :
    select * from 2g_hourly where cellci = 35343 and gbsc = 'bsc_parakansaat_02' limit 10;
    Result
    : 5,110 sec

Ada yang menarik ketika menjalankan query tersebut, jika hanya menggunakan 1 syarat cellci tanpa gbsc  :
select * from 2g_hourly where cellci = 35343 limit 10;

hanya dibutuhkan 0,688 sec

jika langsung menggunakan query menggunakan syarat cellname tanpa gbsc

select * from 2g_hourly where cellname = 'PRKN_SAAT3' limit 10;

dibutuhkan 1,313 sec.

Dimulailah percobaan :
1. Syarat Where dibalik syarat gbsc terlebih dahulu lalu syarat cellci   :
select * from 2g_hourly where gbsc = 'bsc_parakansaat_02' and cellci = 35343 limit 10;
Result 4,078 sec.

2. Subquery query cellci   terlebih dahulu lalu diquery gbsc :
select * from (select * from 2g_hourly where cellci = 35343) as a where a.gbsc = 'bsc_parakansaat_02' limit 10;
Result 4,078 sec.

3. Subquery dibalik dari sequence sebelumnya query gbsc terlebih dahulu lalu diquery cellci   :
select * from (select * from 2g_hourly where gbsc = 'bsc_parakansaat_02' ) as a where a.cellci = 35343 limit 10;

Result 4,187 sec.

4. Ganti syarat =  menggunakan in dimana basis awal diubah menjadi :
select * from 2g_hourly where cellci in (35343) limit 10; limit 10; 

Result 0,688 sec.

lalu dilanjutkan dengan syarat gbsc :
select * from 2g_hourly where cellci in (35343) and gbsc in ('BSC_PARAKANSAAT_02') limit 10;

hasilnya lebih dari 1 menit belum selesai query-nya, saya hentikan.

kesimpulan sementara :

  1. Syarat menggunakan (cellci) integer jauh lebih cepat dari pada menggunakan (cellname) string.
  2. Menggunakan lebih dari 1 syarat lebih lambat daripada menggunakan 1 syarat.
  3. Urutan syarat mempengaruhi kecepatan pencarian.
  4. syarat menggunakan “in” untuk tipe integer tidak ada perbedaan dengan “=“.
  5. syarat menggunakan “in” untuk tipe string lebih lambat dibandingkan menggunakan “=“.

to be continue… mengubah tabel struktur

Leave a Reply

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