-1

아래 쿼리는 내 테이블의 일부 레코드에 대해 거의 300ms가 걸립니다.활성 레코드 쿼리

TestDescription.find(:first, :conditions =>["test_point_id IS NULL AND test_info=?",file_name]) 

성능을 향상시킬 수있는 방법이 있습니까 ???

감사합니다.

+2

귀하의 경우에 test_point_id 및 test_info와 같은 열에 색인을 추가 했습니까? – Salil

+0

@Salil ... yes for test_point_id 색인이 있습니다 .... 나는 test_info에도 추가하려고합니다 ... – Vinay

+0

@Salil ... test_info는 텍스트 필드이므로 색인을 만들 수 없습니다. 그 컬럼에 ..... – Vinay

답변

2

첫째, 당신이 당신에 대해 검색하고있는 컬럼에 인덱스를 가지고 있는지 확인, 고대 find(:first...) 구문을 삭제하고

TestDescription.where(test_point_id: nil, test_info: file_name).first 

다음을 사용합니다.

+1

..... test_info 필드에 인덱스를 만들 수 없습니다 .... 그리고 쿼리를 .where로 변경하면 성능이 많이 향상되지 않았습니다. .. – Vinay

+0

열에 인덱스를 추가 할 수 있습니다. f 어떻게 밖으로 igure. – meagar

+0

감사합니다 ... 이와 같은 색인을 추가했습니다 ... index test_inf_index on test_descriptions (test_info (10)); ... 이제는 빠르며 20 ~ 30ms 만 걸립니다 :) – Vinay

관련 문제