2009-12-21 4 views
8

ActiveRecord가 필요하지 않을 때 ActiveRecord가 데이터베이스에 SHOW FIELDS를 발행하지 못하도록하는 방법이 있습니까?ActiveRecord에서 SHOW FIELDS 피하기

데이터베이스 성능이 중요한 응용 프로그램에서 작업 중이며 일반적인 쿼리에서 SELECT에 0.5ms가 걸리며 관련 SHOW FIELDS가 2ms - 4 배 더 길어졌습니다. 나는 이미에만 열을 지정하고 있습니다 때문에 더욱 중요한 것은, 필요하지 않을 것 내가 검색하려는 :

UsersAddress.find(:all, :conditions => {:user_id => 1}, :select => :address_id)

UsersAddress로드 (를 0.5ms) SELECT address_id을 users_addresses FROM WHERE (. users_addressesuser_id = 1) users_addresses

FROM

UsersAddress 열 (2.1ms) SHOW 필드는이 일부 테이블을 한 번 할 때마다 발생, 부여 처음 만져도 완전히 피할 수는 없습니까? 우선, 해당 정보는 이미 내 스키마에 있습니다. 둘째로, 나는 그것을 필요로하지 않는다.

정말 필요한 경우가 아니라면 Rails가 SHOW FIELDS를 실행하지 않도록 최적화하는 방법은 무엇입니까?

감사합니다.

답변

11

생산 모드에서 서버를 시작한 후에는 한 번만로드됩니다 (모든 요청이 아닌 경우). 이 모든 요청에로드 개발 모드에서

그래서 당신이 생산 모드에 대해 걱정할 필요가 없습니다 (이 개발 모드이며 있기 때문에 거의 모든 모든 요청을 다시 시작).

+0

감사를 참조하십시오. 나는 그때 그것에 대해 걱정하지 않을 것 같아요. 그것이 내 모델을 변경 한 경우 dev 모드에서 확인하는 이유는 무엇입니까? –

+2

알아 두어야 할 것은'cache_classes = false'의 일부입니다. – Eric

0

프로덕션 모드에서도 비활성화하는 방법과 관련이 있습니다. fcgi 및 mod-rails의 경우 시작 시간이 단축됩니다. 여전히 문제를 has_and_belongs_to_many 협회

있다 2.x.x

+0

완전히 비활성화 된 경우 ActiveRecord가 작동하지 않습니다. 테이블에 어떤 열이 있는지 파악할 방법이 없습니다. – cpm