Kiat:
-
Cache tabel metadata . Secara default,
Zend_Db_Table
mencoba 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
EXPLAIN
untuk 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_Adapter
lazy-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?