Tips:
-
Cache de tabel metagegevens . Standaard
Zend_Db_Table
probeert metagegevens over de tabel te ontdekken telkens wanneer uw tabelobject wordt geïnstantieerd. Gebruik een cache om het aantal keren dat dit moet gebeuren te verminderen. Of anders hardcoderen in uw Table-klasse (opmerking:db-tabellen zijn geen modellen ). -
Gebruik
EXPLAIN
om het optimalisatieplan van MySQL te analyseren. Gebruikt het effectief een index?mysql> EXPLAIN SELECT * FROM standard_accessory WHERE model = 'abc';
-
Gebruik
BENCHMARK()
om de snelheid van de zoekopdracht te meten, zonder PHP te gebruiken. De subquery moet een enkele kolom retourneren, dus zorg ervoor dat u een niet-geïndexeerde kolom retourneert, zodat de query de gegevens moet raken in plaats van alleen een indexitem te retourneren.mysql> SELECT BENCHMARK(1000, (SELECT nonindexed_column FROM standard_accessory WHERE model = 'abc'));
-
Merk op dat
Zend_Db_Adapter
lui laadt zijn db-verbinding wanneer u de eerste vraag maakt. Dus als er enige traagheid is bij het verbinden met de MySQL-server, gebeurt dit wanneer u het Table-object instantiseert (wanneer het metagegevens opvraagt). Is er een reden waarom dit lang kan duren? DNS-zoekopdrachten , misschien?