Có cách nào để ngăn ActiveRecord phát hành một SHOW FIELDS tới cơ sở dữ liệu khi nó không cần thiết?Tránh SHOW FIELDS trong ActiveRecord
Tôi đang làm việc trên ứng dụng quan trọng về hiệu suất cơ sở dữ liệu và chỉ nhận thấy rằng trên truy vấn điển hình, SELECT của tôi mất 0,5 mili giây và SHOW FIELDS có liên quan mất 2 ms - 4 lần nữa! Thậm chí quan trọng hơn, nó không cần thiết bởi vì tôi đã xác định cột duy nhất tôi muốn lấy:
UsersAddress.find(:all, :conditions => {:user_id => 1}, :select => :address_id)
UsersAddress Load (0.5 ms) SELECT address_id TỪ
users_addresses
WHERE (.users_addresses
user_id
= 1)Cột UsersAddress (2.1ms) HIỂN THỊ LĨNH VỰC TỪ
users_addresses
Cấp, điều này chỉ xảy ra một lần mỗi lần một số bảng được xúc động lần đầu tiên, nhưng không nên tránh được hoàn thành? Trước hết, thông tin đó đã có trong lược đồ của tôi. Thứ hai, tôi không cần nó.
Bất kỳ ý tưởng nào về cách tối ưu hóa điều này để Rails không chạy được SHOW FIELDS trừ khi nó thực sự cần đến nó?
Cảm ơn!
Cảm ơn. Tôi đoán tôi sẽ không lo lắng về nó sau đó. Làm cho tinh thần tại sao nó sẽ kiểm tra trong chế độ dev .. trong trường hợp tôi thay đổi mô hình của tôi. –
Điều bạn nhận thấy là một phần của 'cache_classes = false'. – Eric