Kiat:
-
Cache tabel metadata . Secara default,
Zend_Db_Tablemencoba menemukan metadata tentang tabel setiap kali objek tabel Anda dipakai. Gunakan cache untuk mengurangi berapa kali ia harus melakukan ini. Atau hard-code di kelas Tabel Anda (catatan:tabel db bukan model ). -
Gunakan
EXPLAINuntuk menganalisis rencana optimasi MySQL. Apakah menggunakan indeks secara efektif?mysql> EXPLAIN SELECT * FROM standard_accessory WHERE model = 'abc'; -
Gunakan
BENCHMARK()untuk mengukur kecepatan query, tidak menggunakan PHP. Subkueri harus mengembalikan satu kolom, jadi pastikan untuk mengembalikan kolom yang tidak diindeks sehingga kueri harus menyentuh data, bukan hanya mengembalikan entri indeks.mysql> SELECT BENCHMARK(1000, (SELECT nonindexed_column FROM standard_accessory WHERE model = 'abc')); -
Perhatikan bahwa
Zend_Db_Adapterlazy-load koneksi db-nya saat Anda membuat kueri pertama. Jadi jika ada kelambatan dalam menghubungkan ke server MySQL, itu akan terjadi saat Anda membuat instance objek Tabel (ketika menanyakan metadata). Ada alasan mengapa ini bisa memakan waktu lama? pencarian DNS , mungkin?