sqlx를 사용하여 Go 코드에서 쿼리를 수행하고 있습니다. 쿼리에는 WHERE IN (?) 절에서 필터링해야하는 긴 값 목록 (~ 10,000)이 있습니다. 이로 인해 성능이 크게 저하됩니다. 이러한 쿼리를 어떻게 최적화 할 수 있습니까? 또한이 쿼리는 Redshift 클러스터에서 수행되므로 쿼리 성능을 향상시키기위한 열의 인덱싱은 해결 방법이 아닙니다.Sqlx 긴 목록이 포함 된 쿼리
values := []int64{143, 123, 123, 542....} // ~10,000 elements
query, args, err := sqlx.In(query, values)
if err != nil {
return nil, err
}
query = dbInterface.Rebind(query)
err = dbInterface.Select(&list, query, args...)
검색어 :
SELECT * FROM table_name WHERE some_id IN (?) ORDER BY created_at;
당신은
sqlx
을해야
삽입 할 쿼리 및 값 유형을 표시하십시오. 그 가치는 어디에서 비롯된 것입니까? 너의 이동 코드에서? 파일? 다른 테이블? – Patrick
@Patrick이 방금 업데이트했습니다. –
값의 최소/최대 값을 취하여 해당 범위를 쿼리 한 다음 Go 코드에서 원하는 레코드 만 필터링 할 수 있습니다. – saarrrr