Lời khuyên:
-
Lưu vào bộ nhớ cache của bảng siêu dữ liệu . Theo mặc định,
Zend_Db_Table
cố gắng khám phá siêu dữ liệu về bảng mỗi khi đối tượng bảng của bạn được khởi tạo. Sử dụng bộ nhớ cache để giảm số lần nó phải thực hiện việc này. Hoặc mã cố định nó trong lớp Bảng của bạn (lưu ý: bảng db không phải là mô hình ). -
Sử dụng
EXPLAIN
để phân tích kế hoạch tối ưu hóa của MySQL. Nó có đang sử dụng chỉ mục một cách hiệu quả không?mysql> EXPLAIN SELECT * FROM standard_accessory WHERE model = 'abc';
-
Sử dụng
BENCHMARK()
để đo tốc độ của truy vấn, không sử dụng PHP. Truy vấn con phải trả về một cột duy nhất, vì vậy hãy đảm bảo trả về một cột không được lập chỉ mục để truy vấn phải chạm vào dữ liệu thay vì chỉ trả về một mục nhập chỉ mục.mysql> SELECT BENCHMARK(1000, (SELECT nonindexed_column FROM standard_accessory WHERE model = 'abc'));
-
Lưu ý rằng
Zend_Db_Adapter
lười tải kết nối db của nó khi bạn thực hiện truy vấn đầu tiên. Vì vậy, nếu có bất kỳ sự chậm chạp nào trong việc kết nối với máy chủ MySQL, điều đó sẽ xảy ra khi bạn khởi tạo đối tượng Table (khi nó truy vấn siêu dữ liệu). Bất kỳ lý do gì mà điều này có thể mất nhiều thời gian? Tra cứu DNS , có lẽ?